gdb自定义脚本

使用gdb调试过程中,对于批量的数据处理和检测,尤其是来自内存的信息时,手动调试需要不停的重复操作:查看地址内容->取地址内容->查看新的地址内容……,当需要做成百上千的重复操作时,这时候,使用gdb的自定义脚本会带来很大的便捷。
外部编辑脚本文档:name.gdb

define my_print
    if $argc != 2
        help my_print
    else
        set $list = $arg0
        set $span = $arg1
        set $prev = ((tcmalloc::Span*)$list)->prev
        set $count = 0
        while ($prev != $list && $prev != $span)
            p *(tcmalloc::Span*)$prev
            set $prev = ((tcmalloc::Span*)$list)->prev
            set $count++
        end
        printf "Search over, %d\n", $count
    end
end
document my_print
    my_print [list] [span]
end

其中取值时常用的通用变量:
$_ : 上一个取址命令的源地址
$__ : 上一个取址命令的地址内容
然后通过在gdb命令行下执行

(gdb) source name.gdb
(gdb) my_print xxx xxx

即可执行脚本内容

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值