进程调试

GDB默认只调试父进程,如果在子进程中打断点,那么子进程会接收SIGTRAP信号
调试前的配置
detach-on-fork:该属性决定了gdb是同时调试父子进程,还是在fork了子进程之后,将子进程分离出去。
On:子进程(或者是父进程,取决于gdb在初始时,要调试的进程,也就是follow-fork-mode的值)
Off:同时调试父子进程。一个进程处于被调试的状态,而另一个则被gdb挂起

follow-fork-mode:该属性决定了GDB在进程调用fork之后的行为。
set follow-fork-mode parent:默认情况下,在调用fork之后,gdb选择跟随(也就是调试)父进程,而子进程则处于运行状态(此时父进程处于阻塞状态)
set follow-fork-mode child:默认情况下,在调用fork之后,gdb选择跟随(也就是调试)子进程,而父进程则处于运行状态(此时进程处于阻塞状态)

info inferiors查看当前进程
直接运行的话
在这里插入图片描述
可以看出来gdb只调试了一个进程,就是当前进程
让我按照上文关闭这个选项, set detach-on-fork off
在这里插入图片描述
再次run
可以看到父子进程都出现在了gdb的调试列表中

在这里插入图片描述

我们再测试一下set follow-fork-mode child

在这里插入图片描述
果然是子进程开始运行

如何终止进程的调试?
使用 detach inferiors Num
在这里插入图片描述

可以看到父进程已经成功地脱离了gdb
那么我们现在调试的只有子进程

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值