1. 程式人生 > >gdb define自定義使用者命令

gdb define自定義使用者命令

gdb define命令,用於定義一系列的gdb指令,就相當於除錯的時候,用函式一樣。
基本語法:

define 名字
    命令塊
end

命令可以接收最多10個引數,引數名為$arg0,$arg1,…,$arg9
一個簡單的例子:

(gdb) define add
Type commands for definition of "add".
End with a line saying just "end".
>p $arg0 + $arg1
>end
(gdb) add 1 2
$1 = 3

還可以用if/else語句:

(gdb) define add
>set $s
= $arg0 + $arg1 >if $s > 10 >printf "%d>10\n",$s >else >printf "%d<=10\n",$s >end >end (gdb) add 1 2 3<=10

寫好的命令可以放在檔案裡,然後gdb中用source命令引入。
如果source兩次相同的檔案,gdb會提示:

Redefine command "add"? (y or n) [answered Y; input not from terminal]

可以在檔案第一行寫一句:

set confirm off

來解決問題。

其實gdb在啟動時,會在當前使用者的主目錄中尋找一個名為 .gdbinit 的檔案,找到的話就執行裡面的所有命令。所以我們可以把自己常用的define都寫在裡面就行了。