一、GDB調試器的使用
1)產生調試信息
編譯指定的.c文件或.cpp文件時加入-g選項,使生成的可執行文件中包含調試所需的信息。
如:gcc -g xx.c -o xx
| g++ -g xx.cpp -o xx
2)進入調試狀態
gdb xx
(xx是含調試信息的可執行文件)
3)基本調試命令
命令簡寫 | 命令全拼 | 具體功能 |
b 行號 | 函數名稱 | 代碼地址 | break | 在指定的行號、函數入口、代碼地址處設置斷點; |
bt | backtrace | 回溯,通常能幫我們確定問題的具體位置; |
clear <斷點行號> | clear | 清除指定行號的斷點,清除時GDB有提示信息; |
c | continue | 繼續執行被調試的程序,直到下一個斷點或程序結束; |
delete <斷點編號> | delete | 清除指定編號的斷點,清除時GDB沒有提示信息;(可同時清除多個斷點) |
disable <斷點編號> | disable | 使指定編號的斷點失效;(可同時設置多個斷點) |
enable <斷點編號> | enable | 使指定編號的斷點恢復作用;(可同時設置多個斷點) |
finish | finish | 執行完當前的子函數,然後停下來等待命令; |
h <命令名稱> | help | 查看指定命令的具體幫助信息; |
i <subcommands> | info | 查看指定的信息,具體見help i,如:address、breakpoints … |
l | list | 列出源代碼,接着上次的位置往下列,每次列10行; |
l <行號> | 列出指定行號附近的源代碼; | |
l <函數名> | 列出指定函數附近的源代碼; | |
n | next | 執行程序的下一行,遇到函數會直接執行; |
p <變量名稱> | 查看並顯示指定變量的值; | |
q | quit | 退出GDB調試環境; |
r | run | 開始執行程序,遇到斷點後暫停; |
s | step | 單步執行,遇到函數會跳轉進入函數體內; |
set <變量> | set | 修改指定變量的值; |
shell <命令> | shell | 運行shell中的指定命令; |
signal <信號名稱> | signal | 把指定的信號發送給當前運行調試的程序; |
start | start | 開始執行程序,直到main()第一行語句前面等待命令; |
whatis <變量> | 查看指定變量或表達式的數據類型; |