gdb進程調試,多進程調試

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

相關文章
相關標籤/搜索