问题
在调试clang时,打不上断点,一直显示no pending。因此,无法在断点处终止程序。
原因
在这个断点前,clang启动了子进程来执行它。我们的断点打不到子进程上,所以程序不会在断点处停止。
解决方法
在gdb中输入命令
set follow-fork-mode child
就可以让子进程也在这里打断点了。
示例
如果,我们的示例程序在clang报错前打上断点。按理说应该不会报错,直接执行到断点。然后往下运行几行代码才报错。但是结果是:

程序直接报错了。这说明我们没有成功打上断点。而且看上图中的方括号,它检测到了子进程。
因此我们输入上述命令,再运行,如图:

可以看见,我们成功给子进程打上了断点,并且gdb成功停在了这里。
本文讲述了在使用Clang进行C++开发时遇到的断点问题,由于程序启动子进程导致无法在断点处暂停。通过在GDB中设置`setfollow-fork-modechild`命令,解决了子进程断点问题,使调试过程得以顺利进行。
6734

被折叠的 条评论
为什么被折叠?



