gdb除錯多程序和多執行緒

2021-08-04 08:06:24 字數 981 閱讀 4066

在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...