天天看點

調試工具gdb

調試工具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恢複程式執行,直到下一個斷點或者程式結束。

繼續閱讀