以某個全局數組爲例說明如何gdb編程打印所有變量:
寫變量遍歷代碼
創建search.gdb文件寫如下內容:
define print_hash_table
set $cnt =1
set $use=2
while $cnt
set $hash_entry=(g_hash_entry_t *)(hash_table.table + 123 * $cnt)
if $hash_entry.valid == 0x1
p /x *$hash_entry
end
if $cnt < 1024
set $cnt = $cnt + 1
else
loop_break
end
end
end
使用方法
gdb process process.core
source search.gdb
print_hash_table