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