gdb 子程序 多程序 fork 除錯

2021-08-30 16:11:24 字數 569 閱讀 3293

標 題: [faq] 請問如何用gdb除錯子程序

發信站: bbs 水木清華站 (mon may 19 18:17:02 2003), 轉信

作個faq,在常見的x86平台上如何gdb除錯fork或者exec出來的子程序

1. 在fork語句上設定斷點,修改fork返回的值。這種做法並沒有真正去

觸動已經存在的子程序,而是強迫夫程序去走子程序的流程。對付簡單

情況都非常有效。

2. 修改源**,在fork後面,父程序和子程序中都加上while(debug_lock) sleep(1);

這樣的語句。fork後父程序detach,兩者就都可以attatch了,attatch後

set debug_lock = 0使得程式流程正常繼續。這種做法可以除錯子程序,

但是需要修改源**。

3. 如果你使用的gdb版本》= 6.0,考慮使用

(gdb) set follow-fork-mode

ask child parent

這裡修改

(gdb) set follow-fork-mode child

gdb多程序除錯

使用gdb最好的文件就是其名為 debugging with gdb 的參考手冊。手冊中有一小章節提到了如何除錯多程序程式。一般情況下,如果被gdb除錯的程式中呼叫fork派生出乙個新的子程序,這時gdb除錯的仍然還是父程序,其子程序的執行不被理會。如果之前你在子程序的執行routine上設定了斷點...

gdb除錯多程序

在大多數系統,gdb對使用fork建立的程序沒有進行特別的支援。當父程序使用fork建立子程序,gdb仍然只會除錯父程序,而子程序沒有得到控制和除錯。這個時候,如果你在子程序執行到的 中設定了斷點,那麼當子程序執行到這個斷點的時候,會產生乙個sigtrap的訊號,如果沒有對此訊號進行捕捉處理,就會按...

gdb除錯多程序

gdb 是 linux 系統上常用的 c c 除錯工具,功能十分強大。對於較為複雜的系統,比如多程序系統,如何使用 gdb 除錯呢?實際上,gdb 沒有對多程序程式除錯提供直接支援。例如,使用gdb除錯某個程序,如果該程序fork了子程序,gdb會繼續除錯該程序,子程序會不受干擾地執行下去。如果你事...