首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

GDB調試器進階使用指南(三) - 值歷史、便利變量、命令歷史、初始化文件、自定義命令

     編輯:關於C

1. 值歷史

每次 print 輸出的值自動記錄在值歷史中,可引用歷史值。

引用語法

語法含義
$最近一次的值
$n第 n 個歷史值($1 為最早)
$$倒數第二個值
$$n倒數第 n 個值
$_x 命令最後顯示的地址
$__x 命令最後顯示地址處的值
$_exitcode被調試程序退出碼
$bpnum最後設置的斷點編號

示例

(gdb) p argc
$1 = 1
(gdb) p $
$2 = 1
(gdb) p $$
$3 = 1
(gdb) show values
$1 = 1
$2 = 1
$3 = 1

2. 便利變量

用戶自定義變量,以 $ 開頭,由字母數字組成,類型自動推導。

(gdb) set $abc = 100
(gdb) p $abc
$4 = 100
(gdb) set $ptr = (int*)0x8048000
(gdb) p *$ptr

3. 命令歷史

默認保存至 ~/.gdb_history,會話結束時寫入。

配置命令

(gdb) set history save on           # 啟用保存
(gdb) set history size 512          # 歷史條數
(gdb) set history filename /path/file # 自定義文件
(gdb) set history expansion on      # 開啟歷史擴展(!號引用)

環境變量

GDBHISTFILE 可覆蓋默認歷史文件路徑。

4. 初始化文件 .gdbinit

GDB 啟動時自動執行的腳本,載入順序:

  1. $HOME/.gdbinit(用戶級)
  2. 命令行選項 -x 指定的文件
  3. ./.gdbinit(項目級,需 set auto-load safe-path 允許)

常用初始化內容

# 禁用分頁
set pagination off
# 顯示行號
set print frame-arguments all
# 定義常用別名
define hook-run
  echo \n=== Program Started ===\n
end

5. 自定義命令

定義命令

(gdb) define mycmd
Type commands for definition of "mycmd", one per line.
End with a line saying just "end".
> info registers
> x/10i $pc
> end

添加幫助文檔

(gdb) document mycmd
Type documentation for "mycmd".
End with a line saying just "end".
> Show registers and next 10 instructions
> end

使用與查看

(gdb) mycmd
(gdb) help mycmd
Show registers and next 10 instructions

6. 實用自定義命令示例

# 打印鏈表
define print_list
  set $node = $arg0
  while $node != 0
    print $node->data
    set $node = $node->next
  end
end
document print_list
Print linked list starting at node pointer (arg0)
end

# 打印二叉樹中序
define print_tree
  if $arg0 != 0
    print_tree $arg0->left
    print $arg0->val
    print_tree $arg0->right
  end
end

7. 總結

  • 值歷史($)避免重複輸入複雜表達式。
  • 便利變量($var)存儲中間結果、指針、計數器。
  • 命令歷史配置實現會話間命令復用。
  • .gdbinit 實現項目級/用戶級自動化配置。
  • 自定義命令封裝重複調試流程,提升效率。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved