现在的位置: 首页 > 综合 > 正文

gdb:循环打印数组

2013年11月25日 ⁄ 综合 ⁄ 共 406字 ⁄ 字号 评论关闭

  今天为了精确查看集群中哈希表中每个机器占有的槽位数,所以需要在gdb中进行统计。哈希表是一个大的数组,如果直接使用gdb输出数量太大,而且没法统计。Google了一番,终于找到一种方法,分享一下,也便于日后查看。在gdb的脚本中循环遍历整个哈希表,并且加上判断条件来进行统计,然后输出结果。导入gdb脚本的方式很简单,gdb中输入“source 脚本名”。

  我的脚本如下:

set $i=32707
set $j=0
while ($i)
  if (fcluster->hash_table[$i].addr == 0x380aa8c0)
     set $j++
  end
  set $i--
end
p $j

前两行的set是定义两个变量,注意一定要加上'$'符号,否则会认为是被调试的程序中的变量。fcluster->hash_table是我的哈希表。gdb脚本中while、if语句块要以end结尾。脚本中的判断语句和C语言中的语法一样。最后输出统计结果。

抱歉!评论已关闭.