gdb调试多进程程序

本文讲述了在使用Clang进行C++开发时遇到的断点问题,由于程序启动子进程导致无法在断点处暂停。通过在GDB中设置`setfollow-fork-modechild`命令,解决了子进程断点问题,使调试过程得以顺利进行。
摘要由CSDN通过智能技术生成

问题

在调试clang时,打不上断点,一直显示no pending。因此,无法在断点处终止程序。

原因

在这个断点前,clang启动了子进程来执行它。我们的断点打不到子进程上,所以程序不会在断点处停止。

解决方法

在gdb中输入命令

set follow-fork-mode child

就可以让子进程也在这里打断点了。

示例

如果,我们的示例程序在clang报错前打上断点。按理说应该不会报错,直接执行到断点。然后往下运行几行代码才报错。但是结果是:
在这里插入图片描述
程序直接报错了。这说明我们没有成功打上断点。而且看上图中的方括号,它检测到了子进程。
因此我们输入上述命令,再运行,如图:
在这里插入图片描述
可以看见,我们成功给子进程打上了断点,并且gdb成功停在了这里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值