gdb 通過attach 可以直接除錯正在執行的程序, 除錯完畢後程序可繼續執行.
這對除錯出現一些偶發性bug時很有用.
步驟:1. 啟動gdb, 進入gdb shell, 命令: gdb [可執行檔案]
2. 切入要除錯的程序, 命令:attach [pid]
3. 這時目標程序處於掛起狀態, 可以輸入一些用來除錯命令, 比如break打斷點. 命令: b [檔名:行數]
4.執行continue, 這時程序會繼續正常執行,直到斷點處.
5.如果忘記在3處打斷點了,可以用ctrl+c讓程序掛起, 打了斷點再continue.
6.完畢後, ctrl+c, 輸入quit 退出
注意:1.別輸入run命令, 不然會重啟乙個程序.
2.打斷點時,檔名和行號之間是乙個冒號, 不是兩個. 如: loginprocess.cpp:55
如何使用gdb除錯多程序 attach方法
測試程式 我們先看看我們的測試程式 in eg1.c int wib int no1,int no2 int main else if pid 0 printf d wibed by d equals d n value,div,total exit 0 else 該測試程式中子程序執行過程中會在w...
gdb多程序除錯
使用gdb最好的文件就是其名為 debugging with gdb 的參考手冊。手冊中有一小章節提到了如何除錯多程序程式。一般情況下,如果被gdb除錯的程式中呼叫fork派生出乙個新的子程序,這時gdb除錯的仍然還是父程序,其子程序的執行不被理會。如果之前你在子程序的執行routine上設定了斷點...
gdb除錯多程序
在大多數系統,gdb對使用fork建立的程序沒有進行特別的支援。當父程序使用fork建立子程序,gdb仍然只會除錯父程序,而子程序沒有得到控制和除錯。這個時候,如果你在子程序執行到的 中設定了斷點,那麼當子程序執行到這個斷點的時候,會產生乙個sigtrap的訊號,如果沒有對此訊號進行捕捉處理,就會按...