gdb 自定義指令碼命令語法簡單介紹
阿新 • • 發佈:2019-02-01
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中使用的變數要加上'$'符號,否則會認為是被除錯的程式中的變數
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 命令來匯入。
由這幾條簡單語句已經勾勒出了指令碼語言的概貌,可以與計算機互動了! 溝通愉快!