GDB的一些命令使用
本文內容來自:linuxc編程一站式學習
在編譯文件是加上 -g 編譯選項即可調試。gdb調試和源文件有關,不止是和編譯生成的文件有關。
wytx@ubuntu:~$ gcc -g -o hello hello.c
wytx@ubuntu:~$ gdb ./hello
這就啓動了gdb,下面是調試時需要用到的常用命令
單步、函數跟蹤等基本命令
命令 | 描述 |
---|---|
backtrace(或bt) | 查看各級函數調用及參數 |
finish | 執行到當前函數返回,然後停下來等待命令 |
frame(或f) | 幀編號 選擇棧幀 |
info(或i) | locals 查看當前棧幀局部變量的值 |
list(或l) | 列出源代碼,接着上次的位置往下列,每次列10行 |
list 行號 | 列出從第幾行開始的源代碼 |
list 函數名 | 列出某個函數的源代碼 |
next(或n) | 執行下一行語句 |
print(或p) | 打印表達式的值,通過表達式可以修改變量的值或者調用函數 |
set var | 修改變量的值 |
start | 開始執行程序,停在main函數第一行語句前面等待命令 |
step(或s) | 執行下一行語句,如果有函數調用則進入到函數中 |
直接回車 | 執行上一條命令 |
斷點相關的命令
命令 | 描述 |
---|---|
break(或b) | 行號 在某一行設置斷點 |
break 函數名 | 在某個函數開頭設置斷點 |
break…if… | 設置條件斷點 |
continue(或c) | 從當前位置開始連續而非單步執行程序 |
delete breakpoints | 刪除斷點 |
display 變量名 | 跟蹤查看一個變量,每次停下來都顯示它的值 |
disable breakpoints | 禁用斷點 |
enable breakpoints | 啓用斷點 |
info(或i) breakpoints | 查看當前設置了哪些斷點 |
run(或r) | 從頭開始連續而非單步執行程序 |
undisplay | 取消對先前設置的那些變量的跟蹤 |
break 10 if sum != 0 //在第10行設置斷點,當sum不等於0是纔有效
觀察點相關命令
命令 | 描述 |
---|---|
watch 變量名 | 設置觀察點(例如 watch temp) |
info(或i)watchpoints | 查看當前設置了哪些觀察點 |
delete watchpoints | 也是可以刪除觀察點的 |
x 例如:x/7b | 從某個位置開始打印存儲器的一段內容,全部當成字節來看,而不區分哪些字節屬於哪些變量;x命令打印存儲器中的內容。 7b是打印格式, b表示每個字節一組, 7表示打印7組 |