gdb進程調試,多進程調試


1.單進程的調試

  常規的通過gdb cmd這種方式開啟調試,特別說明的是通過attach的方法附加到一個指定的進程上去進行調試,這種方法適合於調試一個已經運行的進程,具體用法:

   gdb -p [pid] 

  此時被attach的進程會阻塞,進入T模式(ps 命令看到STATE為T),如果調試完畢了,使用 detach  命令就釋放了進程,它就自由運行了。

2.多進程的調試

  使用gdb調試多進程時,如果想要在進程間進行切換,那么就需要在fork調用前設置: set detach-on-fork off ,然后使用 info inferiors 來查看進程信息,得到的信息可以看到最前面有一個進程編號,使用 inferior num 來進行進程切換。

那么為什么要使用 set detache-on-fork off 呢?它的意思是在調用fork后相關進程的運行行為是怎么樣的,是detache on/off ?也就是說分離出去獨立運行,不受gdb控制還是不分離,被阻塞住。這里還涉及到一個設置 set follow-fork-mode [parents/child] ,就是fork之后,gdb的控制落在誰身上,如果是父進程,那么分離的就是子進程,反之亦然。如果detache-on-fork被off了,那么未受控的那個進程就會被阻塞住,進程狀態為T,即處於調試狀態。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM