gdb除錯備忘

2021-10-06 01:13:43 字數 887 閱讀 5321

指令

r:執行

根據**行數設定斷點是最常見的一種方式,在debug程式執行前就可以進行斷點的配置。如:

(gdb) b src/main.cpp:127
當程式執行到main.cpp檔案的第127行時就會出發斷點。

顧名思義,這種斷點是當滿足一定條件時才會觸發,比較適合進行異常排查。設定方式(gdb)break line-or-function if (condition), 如:

(gdb) b src/main.cpp:127 if cnt==10
就是根據位址來進行設定斷點,只能是在debug程式執行之後設定,因為只有執行後,你才能很方便地獲知變數的位址。當該位址上的內容發生改變時就會觸發斷點。

設定資料斷點有兩種方式,一種是直接指出位址值,如:

(gdb) b *0x400522
(gdb) b &變數名
這種斷點是當程式執行到某個程式時就會觸發斷點。設定方式如:

(gdb) b funcname
但是函式斷點並不是對所有函式都有效,比如優化後的靜態函式和inline函式等,可能就無法觸發斷點。

設定監視也必須是在程式執行後才行。如:

(gdb) watch *位址    # 當位址所指內容傳送變化時斷點

(gdb) watch var #當var值變化時,斷點

(gdb) watch (condition) #當條件符合時,斷點

監視也被稱為硬體斷點。可以監測棧變數和堆變數值的變化,當被監測變數值發生變化時,程式被停住。

gdb除錯技巧備忘

為了能讓程式更直觀的被除錯,在編譯時應該新增一些選項 gdb a.outgdb a.out set args a b c any argument you need b main rungdb bin name core name大致按如下步驟 ps axu grep bin name,獲取程序id...

gdb除錯 簡單命令 備忘

www.youku.com linux下c語言程式設計gdb除錯,指標函式呼叫是的引數傳遞 1.編譯時 要加 g gcc option test.c option g 為以後gdb除錯準備 wall 輸出所有警告資訊 2.gdb 除錯 gdb a.out gdb help gdb help brea...

gdb 除錯 vs除錯

一 先要生成二進位制檔案 g g 1.cpp o 1.out g引數不要省,不然 gdb l 引數用不了 二 引數 設定斷點 設定 函式斷點break func 在某行設定斷點break 7 檢視斷點資訊 info break 刪除斷點 d 刪除所有斷點 d 3 刪除第三個 執行 r 下一步 n 逐...