前提:除錯的程式編譯時需要使用 -g 命令
1. 啟動gdb
start -- 只執行一步
n -- next
s -- step(單步) -- 可以進入到函式體內部
c - continue -- 直接停在斷點的位置
2. 檢視**
l -- list
l 10(函式名)
l filename:行號(函式名)
3. 設定斷點
設定當前檔案斷點:
b -- break
b 10(函式名)
b filename:行號(函式名)
設定條件斷點:
b 10 if value==19
刪除斷點:
delete -- del - d
d 斷點的編號
獲取編號: info -- i
4. 檢視設定的斷點
info b
5. 開始 執行gdb除錯
執行一步操作:
繼續執行:
執行多步, 直接停在斷點處:
6. 單步除錯
進入函式體內部: s
從函式體內部跳出: finish
不進入函式體內部: n
退出當前迴圈: u
7. 檢視變數的值
p -- print
8. 檢視變數的型別
ptype 變數名
9. 設定變數的值
set var 變數名 = 賦值
10. 設定追蹤變數
display
取消追蹤變數
undisplay 編號
獲取編號: info display
11. 退出gdb除錯
quit
手冊 GDB除錯指令
gdb l list 列出 line 5 行到 line 1 5 行間的內容 gdb l list 列出 line1 行到 line2 行間的內容 gdb r run argn 若 不列出引數 則使用 上次輸入引數 gdb show args 檢視當前使用 引數 gdb set args argn ...
gdb除錯相關指令
the gnu project debugger 1編譯2開啟gdb,設定相關斷點 r 或run 執行,前提是先要把斷點設定好 n 或next 下一步。c 或continue 執行至斷點,沒斷點就執行至結束 s 或step 進入函式體內部,不能進入就單步,可看見函式引數值,l 可看函式 b可增加斷點...
常見GDB除錯命令
pmap 列印命令格式 1 std maptest map pmap test map in tint 2 class test class std maptest map pmap test map int 即可,pmap test map int test class列印好像會有問題 pvect...