GDB詳細命令列表可參考:http://www.zeuux.org/science/learning-gdb.cn.html
1,
where : 輸出堆棧中跟蹤的函數調用記錄.
bt : backtrace,同上.
backtrace full
bt full
bt full n
bt full -n
也打印本地變量。n是要打印的幀的數量,如上所述。
2,
frame <number>: 檢查某一特定帖(一帖爲一個函數調用).
frame n
n是一個從0開始的整數,是棧中的層編號。比如:frame 0,表示棧頂,frame 1,表示棧的第二層。
up
表示向棧的上面移動n層,可以不打n,表示向上移動一層。
down
表示向棧的下面移動n層,可以不打n,表示向下移動一層。
info frame 打印出更爲詳細的當前棧層的信息,只不過,大多數都是運行時的內內地址
info args
打印出當前函數的參數名及其值。
info locals
打印出當前函數中所有局部變量及其值。
info catch
打印出當前的函數中的異常處理信息。
3,
finish : 當用step命令進入函數內部後,用finish命令來執行程序直到從當前函數返回.
4,
用枚舉代替宏定義: 便於調試時檢查變量值的含義.
5,
watch <…>: 設置觀察點.
6,
gdb不能單步調試if,while語句的多個條件函數.所以必要時要重寫代碼.
也可在被調函數內設置斷點來檢查其值,但只能查看而不能記錄其值.
7,
調試工具: valgrind等.
8,
<<debugging>> , David J.Agans.
info break 查看斷點
print x=1 修改變量x的值
set args 。。。 指定參數:
show args
display 設置自動顯示的變量
delete 刪除斷點
frame或f 查看當前棧層的信息
info frame或info f 這個命令會打印出更爲詳細的當前棧層的信息,只不過,大多數都是運行時的內存地址。比如函數的地址,調用函數的地址,被調用函數的地址,目前的函數是由什麼樣的程序語言寫成的、函數參數地址及值,局部變量的地址等等
path 《dir》: 設定程序運行路徑
show 《dir》:查看路徑
set environment varname[=value]:設置環境變量。如set env USER=hchen
show environment[varname]: 查看環境變量
info terminal: 顯示程序用到的終端的模式
run>outfile: 重定向輸出
tty /dev/ttyb:指定輸入輸出的終端設備