使用GDB调试nginx
来源:互联网 发布:snh48黑历史 知乎 编辑:程序博客网 时间:2024/05/29 03:32
gdb是Linux上调试应用程序的首选。在进行nginx的调试过程中,首先需要修改Makefile文件。
当然,也可以添加 -gstabs 代替 -O0 ,二者是等同的。上面这种方法是在 ./configure 之后的。如果想省事的话,可以执行如下操作,避免了后续对 Makefile 文件的修改。
调试nginx总体来说有三种方法。
一、设置nginx为前台单进程模式
修改配置文件,增加如下两句:
这就可以了,启动调试。
说明:在这个过程中,因为nginx是前台运行,占用了键盘,因此gdb的命令无法输入。需要输入Ctrl+C,暂停nginx,然后设置断点等一系列操作,之后键入 c 则 nginx就会继续运行了。如下所示:
二、设置nginx为后台单进程模式
修改配置文件为:
这样就打开了nginx后台运行的模式,启动gdb调试发现如下:
难道进程真的退出了吗?没有,退出的只是nginx的父进程,而fork出来的进程gdb没有跟到,所以出现了这个情况。这种情况下,gdb是有自己的策略的。命令如下:(其实这一点我还是比较困惑的!)
三、设置nginx为后台多进程模式
这也是nginx的默认运行模式。在这种情况下,使用gdb的attach和detach指令。
首先查看nginx的work_process进程号是多少,然后直接attach调试就可以了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Readingsymbolsfrom/usr/local/nginx/sbin/nginx...done.
(gdb) run
Startingprogram:/usr/local/nginx/sbin/nginx
[Thread debugging usinglibthread_dbenabled]
Program exited normally.
(gdb)shellpidofnginx
5776 5775
(gdb)attach5775
Attaching to program:/usr/local/nginx/sbin/nginx,process5775
Readingsymbolsfrom/lib/libpthread.so.0...(nodebuggingsymbolsfound)...done.
[Thread debugging usinglibthread_dbenabled]
Loadedsymbolsfor/lib/libpthread.so.0
#停止调试,使用detach即可
阅读全文
0 0
- 使用GDB调试Nginx
- 使用GDB调试nginx
- 使用gdb调试nginx源码
- 使用gdb调试nginx源码
- nginx源码分析--使用GDB调试nginx
- nginx源码分析--使用GDB调试
- nginx源码分析--使用GDB调试
- nginx源码分析--使用GDB调试
- 使用gdb调试Nginx worker进程
- nginx模块_使用gdb调试nginx源码
- nginx模块_使用gdb调试nginx源码
- nginx模块_使用gdb调试nginx源码
- nginx模块_使用gdb调试nginx源码
- nginx模块_使用gdb调试nginx源码
- 利用gdb调试nginx
- gdb调试nginx要点
- 用GDB调试NGINX
- nginx gdb 调试
- Error 'Cannot add or update a child row: a foreign key constraint fails
- ubuntu14.04安装cuda以后卡在开机界面
- 19、不一样的C++系列--友元
- [CF480B]Long Jumps
- OOP Unit02 对象和类(下) 、 数组
- 使用GDB调试nginx
- css基础01
- [CF480C]Riding in a Lift
- 编译原理之引论
- xshell命令行中登陆主机
- 关于线程之间的通信问题
- Python中的函数(1)
- JavaScript数组
- 图像显著性区域提取[1]——研究现状