使用gdb新增斷點的幾種方式

2022-08-01 08:06:12 字數 865 閱讀 8509

根據**行數設定斷點是最常見的一種方式,在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新增斷點的幾種方式

目錄 1.普通斷點 2.條件斷點 3.資料斷點 4.函式斷點 5.刪除斷點 6.監視 7.儲存斷點 根據 行數設定斷點是最常見的一種方式,在debug程式執行前就可以進行斷點的配置。如 gdb b src main.cpp 127當程式執行到main.cpp檔案的第127行時就會出發斷點。顧名思義,...

gdb幾種設定斷點的方式

gdb幾種設定斷點的方式 方式1 根據函式名,查詢符號 symbol 設定斷電 此種方式最為簡單,閱讀源 了解函式如何呼叫,在需要暫停執行的函式入口進行斷點設定。但並不是所有函式,任何時候都能設定斷點的。比如優化後的靜態函式,inline函式。在特定的情況下,通過函式名進行斷點設定便不可為,而又需要...

ROS使用gdb除錯斷點

我目前沒有使用roslaunch 通過修改 launch prefix xterm e gdb ex run args 獲得成功。我使用gdb去啟動orb slam節點。在 catkin ws devel lib orb slam下,終端開啟輸入 gdb orb slam雖然我會提示 reading...