gdb除錯多流程程式

2021-08-20 20:45:45 字數 640 閱讀 1267

預設設定下,在除錯多程序程式時gdb只會除錯主程序。但是gdb(>v7.0)支援多程序的分別以及同時除錯,換句話說,gdb可以同時除錯多個程式。只需要設定follow-fork-mode(預設值:parent)和detach-on-fork(預設值:on)即可。

設定方法:set follow-fork-mode [parent|child] set detach-on-fork [on|off]

以上四種組合根據需要任選一種

查詢正在除錯的程序:info inferiors

切換除錯的程序: inferior

新增新的除錯程序: add-inferior [-copies n] [-exec executable] ,可以用file executable來分配給inferior可執行檔案。

其他:remove-inferiors infno, detach inferior

gdb預設支援除錯多執行緒,跟主線程,子執行緒block在create thread。

查詢執行緒:info threads

切換除錯執行緒:thread

GDB除錯多檔案程式

以前用gdb除錯都只是除錯單個的檔案,在做dhcp二級relay的時候需要對整個工程進行gdb除錯,發現自己竟然不會!現在終於惡補上了,發到部落格上與大家分享。下面就以我除錯isc dhcp 為例來說一下除錯的過程 首先啟動dhcrelay sudo gdb dhcrelay 由於dhcrelay的...

GDB除錯之改變程式執行流程

最近學習了函式呼叫及返回的流程後,突發奇想能不能直接使用gdb修改棧空間,達到呼叫函式 返回主函式 變為呼叫函式 插入自定義函式 返回主函式的效果,感覺很有意思,遂進行以下實驗 肥腸簡單的 如下 int add2 int a,int b int add int a,int b int main in...

常用GDB除錯流程

gdb 檔名 file 檔名 以下為除錯狀態下的可以用到的命令 可以僅輸入單詞的輸入,如break可簡為b 尖括號中為說明 list 顯示源 l break 行號 設定斷點 b run 執行程式 r continue 繼續從斷點處執行 c print 變數 除錯時檢視變數的值 p del 行號 刪除...