1.在大多數的作業系統中,gdb在除錯多程序時。當父程序使用fork建立出子程序,用gdb除錯時,gdb只會 父程序,對子程序沒有控制和除錯。如果你在子程序執行到**所設定的斷點處,會產生乙個sigtrap的訊號。如果沒有對此訊號進行訊號捕捉處理,就會預設的處理———終止程序。
2. 如果這樣的話我們可以建立在建立子程序時,先將函式等待一段時間再執行,在這段時間找到該程序,使用attach將程序附加到gdb中,從而達到除錯子程序的目的。
3.預設情況下除錯時只會除錯父程序,不會除錯子程序,因為我們的follow-fork-mode mode來設定fork跟隨模式。
mode的引數我們預設的是parent。
而mode的引數有幾種。
parent:gdb只跟蹤父程序,不跟蹤子程序。(預設模式)
child:gdb在子程序產生以後只跟蹤子程序,放棄對父程序的跟蹤。
follow-fork-mode
detach-on-fork
說明parent
on 只除錯主程序(gdb預設)
child
on 只除錯子程序
parent
off
同時除錯兩個程序,gdb跟主程序,子程序block在fork位置
child
off
同時除錯兩個程序,gdb跟子程序,主程序block在fork位置
設定方法:set follow-fork-mode [parent|child] set detach-on-fork [on|off]
gdb除錯多程序多執行緒
1.除錯多程序預設設定下,在除錯多程序程式時gdb只會除錯主程序。但是gdb v7.0 支援多程序的 分別以及同時 除錯,換句話說,gdb可以同時除錯多個程式。只需要設定follow fork mode 預設值 parent 和detach on fork 預設值 on 即可。接下來,首先介紹一下f...
gdb除錯多程序多執行緒
gdb是非常強大的unix及unix like下的程式除錯工具 gdb的使用 r或run 執行程式。list l 行號 顯示檔案源 接著上次的位置往下列,每次列10行。list l 函式名 列出某個函式的源 s或step 進入函式呼叫 breaktrace 或bt 檢視各級函式調 用及引數 info...
GDB 除錯多執行緒多程序
gdb是linux下的除錯利器,在c c 程式開發過程中必不可少的。這裡總結一下多程序和多執行緒的除錯方法和技巧。多程序的除錯 如下示例 include include include include include include static int glob 23 void test int ...