1.单进程的调试spa
常规的经过gdb cmd这种方式开启调试,特别说明的是经过attach的方法附加到一个指定的进程上去进行调试,这种方法适合于调试一个已经运行的进程,具体用法:调试
gdb -p [pid] code
此时被attach的进程会阻塞,进入T模式(ps 命令看到STATE为T),若是调试完毕了,使用 detach 命令就释放了进程,它就自由运行了。blog
2.多进程的调试进程
使用gdb调试多进程时,若是想要在进程间进行切换,那么就须要在fork调用前设置: set detach-on-fork off ,而后使用 info inferiors 来查看进程信息,获得的信息能够看到最前面有一个进程编号,使用 inferior num 来进行进程切换。cmd
那么为何要使用 set detache-on-fork off 呢?它的意思是在调用fork后相关进程的运行行为是怎么样的,是detache on/off ?也就是说分离出去独立运行,不受gdb控制仍是不分离,被阻塞住。这里还涉及到一个设置 set follow-fork-mode [parents/child] ,就是fork以后,gdb的控制落在谁身上,若是是父进程,那么分离的就是子进程,反之亦然。若是detache-on-fork被off了,那么未受控的那个进程就会被阻塞住,进程状态为T,即处于调试状态。 io