很多程序都使用了守护进程的方式,即程序启动之后,父进程退出,子进程被init进程托管,并且主程序交由子进程执行。
这种情况下,如果使用gdb调试程序,使用一般的方式调试,我们会发现,调试开始后没有函数栈信息,这是因为gdb之后跟踪的是父进程,而父进程已经退出了。
那么这种情况如何调试呢?
gdb开始之后,先设置set follow-fork-mode child,gdb将在fork之后直接跟踪子进程。
然后就是设置断点,r执行程序并调试。
很多程序都使用了守护进程的方式,即程序启动之后,父进程退出,子进程被init进程托管,并且主程序交由子进程执行。
这种情况下,如果使用gdb调试程序,使用一般的方式调试,我们会发现,调试开始后没有函数栈信息,这是因为gdb之后跟踪的是父进程,而父进程已经退出了。
那么这种情况如何调试呢?
gdb开始之后,先设置set follow-fork-mode child,gdb将在fork之后直接跟踪子进程。
然后就是设置断点,r执行程序并调试。