1. 程式人生 > >gdb 自定義指令碼命令語法簡單介紹

gdb 自定義指令碼命令語法簡單介紹

1. # 為指令碼註釋命令
2. 賦值語句:set, 變數以$開始,以便區分是gdb還是除錯程式變數。
  變數可為全域性或區域性,視宣告位置。
 例如:
    set $x = 1;
3. 函式宣告語句:define .. end 語句
  define func
  end
  無行參宣告,但可以直接用$arg1,$arg2引用, $argc 為形參個數

4. 顯示語句: echo
5. 顯示語句: printf

6. 條件語句: if..else..end
7. 迴圈語句: while .. end

8. 說明(幫助)語句: document.. end
  為函式書寫幫助說明

9. 常規的gdb 除錯命令語句。

10. 支援shell 命令, 可以實現dump, search 等複雜功能

----------------------------------------
GDB 記憶體查詢
Usage: find
------------------------------------

給一個簡單的示例,其內建find 比這個功能強。
(gdb)
define find
set $ptr = $arg0
set $cnt = 0
while ( ($ptr<=$arg1) && ($cnt<$arg2) )
    if ( *(unsigned int *)$ptr == $arg3 )
        x /wx $ptr
        set $cnt = $cnt + 1
    end
    set $ptr = $ptr + 4
end
end

注意:

gdb中使用的變數要加上'$'符號,否則會認為是被除錯的程式中的變數

自定義的gdb命令指令碼檔案,可以用source 命令來匯入。

由這幾條簡單語句已經勾勒出了指令碼語言的概貌,可以與計算機互動了! 溝通愉快!