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