在linux中,gdb 沒有對多程序程式除錯提供直接支援,例如,使用gdb除錯某個程序,如果該程序fork了子程序,gdb會繼續除錯該程序,子程序會不受干擾地執行下去。如果你事先在子程序**裡設定了斷點,子程序會收到sigtrap訊號並終止。但是gdb(>v7.0)支援多程序的分別以及同時除錯,換句話說,gdb可以同時除錯多個程式。首先需要設定follow-fork-mode(預設值:parent)和detach-on-fork(預設值:on)。
前者可以通過命令set follow-fork-mode [parent|child]進行設定除錯父程序還是子程序。
parent 只除錯主程序(gdb預設)
child 只除錯子程序
後者可以通過set detach-on-fork [on|off]指示gdb在fork之後是否斷開(detach)某個程序的除錯,或者都交由gdb控制。
on: 斷開除錯follow-fork-mode指定的程序。
off: gdb將控制父程序和子程序。follow-fork-mode指定的程序將被除錯,另乙個程序置於暫停(suspended)狀態。
除錯:
切換子程序
gdb有附著(attach)到正在執行的程序的功能,即attach 命令。因此我們可以利用該命令attach到子程序然後進行除錯。即我們執行想要除錯的相應程序,再獲取其pid,通過attach進行除錯該程序。
另外,多執行緒除錯gdb是預設支援的,跟主線程,子執行緒block在create thread。
相關命令:
查詢執行緒:info threads
切換除錯執行緒:thread
gdb除錯多程序和多執行緒
程序 1 預設設定下,在除錯多程序程式時gdb只會除錯主程序。但是gdb支援多程序的分別以及同時除錯,也就是說,gdb可以同時除錯多個程式。只需要設定follow fork mode和detach on fork即可。設定方法 a 啟動gdb b set follow fork mode paren...
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...