如果讓我用最簡單的話形容一下高gdb, 那我覺得“強大”兩個字就足矣了。廢話少說,上乾貨。
在應用層開發程序,有很多調試工具可以選擇,各種環境有各自的工具幫助開發人員定位問題以解決問題,但在linux中,尤其是嵌入式開發中,gdb 就是比較出名的調試工具了,爲什麼呢,因爲它強大嘛!
gdb簡介:
最牛逼的UNIX下的程序調試工具,沒有之一。可以動態改變程序運行環境,能夠隨心所欲的控制程序的運行及查看程序的一切,對,就是一切。
通過gdb命令行,我們可以查看文件清單,管理斷點,查看數據,變量檢查賦值,單步執行等各種各樣的功能。
要注意說明的是,gdb使用的前提是,在貶義的時候一定要在編譯選項中使用 -g 參數。
命令簡介:
gdb通過一些列指令來實現其功能,下面介紹一些常用的gdb指令。
- list 查看源代碼
list xxx 查看第xxx行的代碼
list +n 查看當前行的後面n行代碼
list - n 查看當前行的前面n行代碼
list function 查看function函數的代碼 - 運行程序
gdb binFile 加載binFile二進制文件
set args 設置運行參數
r (run) 運行該二進制文件 - 顯示數據
p (print) vals 打印變量vals的值
p *vals 查看其他複雜變量的值, 包括數組,指針等
whatis val 查看val變量的類型 - 斷點管理
b (break) lineNum 在第lineNum處設置斷點
b functionname 在函數functionName處設置斷點
b filename:line-numbe 在某個文件的特定行設置斷點
b line-or-function if expr 通過條件變量設置斷點 eg:b 123 if val == 2
info break 查看所有的斷點信息
delete breakpoint 刪除所有斷點
delete breakpoint 1 刪除斷點1
disable breakpoint 1 過濾斷點1
enable breakpoint 1 使能斷點1 - 函數執行
n (next) 單步執行該程序
一般來說,作爲程序開發人員來說,我們使用最多的就是斷點設置以及變量查看功能,至於其他基礎功能,只是更好的爲這兩個基本功能增強而已。
這個工具只是幫助開發人員定位非語法問題而已。入門比較簡單,如果想用到其強大的功能,可以參考一下其他資料,加深一下學習。