gdb调试

本文详细指导如何在gdb中配置调试参数,包括设置follow-fork-mode和detach-on-fork,以调试Nginx的workerprocess子进程。涉及编译选项、权限切换、版本确认及关键命令如断点设置、运行和查看堆栈信息。
摘要由CSDN通过智能技术生成

//a)编译时g++ 要带这个 -g选项;
//b)su进入root权限,然后gdb nginx调试
//c)gdb缺省调试主进程,但是gdb 7.0以上版本可以调试子进程【我们需要调试子进程,因为干活的是worker process是子进程】;
//命令 行下 :gdb -v看版本
//d)为了让gdb支持多进程调试,要设置一下 follow-fork-mode选项 ,这是个调试多进程的开关;
//取值可以是parent[主] /child[子] ,我们这里需要设置成child才能调试worker process子进程;
//查看follow-fork-mode: 在gdb下输入show follow-fork-mode
//输入 set follow-fork-mode child
//(e) 还有个选项 detach-on-fork, 取值为 on/off,默认是on【表示只调试父进程或者子进程其中的一个】
//调试是父进程还是子进程,由上边的 follow-fork-mode选项说了算;
//如果detach-on-fork = off,就表示父子都可以调试,调试一个进程时,另外一个进程会被暂停;
//查看 show detach-on-fork
//输入set show detach-on-fork off ,如果设置为off并且 follow-fork-mode选项为parent,那么fork()后的子进程并不运行,而是处于暂停状态;
//(f)b logic/ngx_c_slogic.cxx:198 (设置断点)
//(g)run 运行程序运行到断点;
//(h)print…打印变量值。这些调试手段,大家自己百度学习;
//(i)c命令,继续运行

也可以通过如下方式调试:
1)查看进程号
2)gdb attach 进程号 ----------------- attach到已启动的进程上
3)(gdb) stop ------------------ 先暂停那个进程,然后设置一些断点和一些watch
4)(gdb) b file.cpp:212 ------------------- 设置断点(在file.cpp文件的212行处设置断点)
3)c(continue)让程序继续执行
4)程序挂了,查看堆栈信息
5)bt full

gdb调试参考链接1

gdb调试参考链接2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lz_煜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值