GBase 8a
运维管理
文章

GBase8a基于GDB调试

发表于2026-01-09 15:06:5743次浏览3个评论

使用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命令行下执行

评论

登录后才可以发表评论
GBase用户21182发表于 6个月前
学习了。
用户头像
GBase用户28017发表于 6个月前
海洋之心产了。
GBase用户51840发表于 2个月前
学习了