gdb 查看结构体_gdb脚本便捷处理coredump

有时候需要查看coredump文件中数组元素的值,数量少可以手动查看,如果数组很大就需要自动化处理。

1、gdb变量定义

set variable $i = 0

variable 可以省略,或者是开头至少两个字母的部分拼写,比如:va、var、vari。

修改它的值同样需要使用set语句,比如:set $i = $i + 1

gdb变量前边必须有$,否则会认为是程序中的变量。

2、gdb支持的控制结构

判断:if ... else ... end

循环:while ... end,注意打断和继续循环是:loop_break 和 loop_continue


3、数组元素的输出

就像普通代码一样:

set variable $i = 0while   p arr[$i]   set $i = $i + 1   if $i >= arr_len     loop_break   endend

也可以是

set variable $i = 0while $i < arr_len   p arr[$i]   set $i = $i + 1end

还可以利用条件表达式只输出自己关心的元素。

4、性能

如果在一个很大的数组里边查找自己需要的结果,会花费很长时间。此时不妨增加一下定时的输出,让我们知道它还活着:

set variable $i = 0while $i < arr_len  if arr[$i] > 10000     p arr[$i]   end   set $i = $i + 1   if $i%1000 == 0      p $i   endend


5、重复调用的函数和它的文档

define find_items  if $argc != 3      help find_items     return   end   set variable $i = 0   while $i < $arg1      if $arg0[$i] > $arg2        printf "%d %d\n", $i, $arg0[$i]       end      set $i = $i + 1      if $i%1000 == 0        p $i      end   endenddocument find_items   Find items in the array that are greater than the specified value   usage: array array_length thresholdend

这样find_items可以反复调用,更加方便。

欢迎关注

7081d29bbcbe6df6251978961b5993f7.png

暂时无法开通评论,欢迎留言提问,增加话题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值