調試工具gdb
gdb簡介
- 監視變量值得變化
- 設定斷點,在指定代碼行上暫停執行
- 單步執行代碼
-
分析崩潰程式産生core檔案
指令行形式:
gdb filename
調試步驟
調用gdb
- 調用gdb,裝載子程式
$gdb test
- (gdb)提示符是gdb的主要接口,可以向gdb輸出指令
設定斷點并調試
(gdb)break main
注意:break main是在main函數内第一個非簡單指派語句出
(gdb)break 所在行數設定斷點
- 開始執行程式
(gdb)run
- 可以使用單步跟蹤指令跟蹤代碼程式
(gdb)step
- print指令: n 表 示 第 n 個 p r i n t 命 令 , n表示第n個print指令, n表示第n個print指令,$n表示倒數第n+1個print指令
(gdb)print 表達式
- display指令:顯示一些表達式的值
(gdb)display 要顯示值的表達式
- next指令:當不需要進入某一函數内部時使用
- 使用quit指令退出gdb
(gdb)quit
顯示資料指令
使用display和print指令
記憶體檢查指令
x/format address
format指定了顯示單元的個數,後面是顯示記憶體的方式:
(gdb)x/2c 0x120100fa0
使用printf指令
(gdb)printf"%2.2s\n,(char*)0x12100fa0"
第一個2表示最多2個字元,第二個2表示輸出從0x12100fa0開始的2個字元
使用set指令
set指令可以顯示資料和修改變量的值
使用斷點
(gdb)break test.c:21
調試器gdb在程式test.c的21行設定了一個斷點
(gdb)break printmessage
在指定函數printmessage()的開始位置設定斷點
(gdb)run
開始運作程式,在21行暫停執行,可以在此處單步跟蹤或者檢測下個變量的值。完成工作後,使用continue恢複程式執行,直到下一個斷點或者程式結束。