【GDB】使用 GDB 自动画红黑树

阅读本文前需要的基础知识
用 python 扩展 gdb
python 绘制 graphviz

使用 GDB 画红黑树

前面几节中介绍了 gdb 的 python 扩展,参考 用 python 扩展 gdb

并且 python 有 graphviz 模块,那么可以用 gdb 调用 python,在 python 中使用 graphviz 绘图。

思路

在红黑树插入的地方打 GDB 断点,在断点处定义 command 命令,并将红黑树的指针作为参数传递给 python。

在 python 中解析参数,并构造 dot 语法,并显示

代码示例

.gdbinit 文件

layout src
source script/algc-test-rbtree-gdb.py
b 15
b 24
b 34
b 43

commands 1
print-rbt *tree->root
end

commands 2
print-rbt *tree->root
end

commands 3
print-rbt *tree->root
end

commands 4
print-rbt *tree->root
end

python 文件

import gdb
import os


class PrintRBT(gdb.Command):
    def __init__(self):
        super().__init__("print-rbt", gdb.COMMAND_USER)

    def invoke(self, arg, from_tty):
        root = gdb.parse_and_eval(arg)
        ......
        ......
        os.system("dot -Tsvg ./rbt.dot > ./rbt.svg")
        os.system("dot -Tpng ./rbt.dot > ./rbt.png")
        os.system("xdg-open ./rbt.svg")
PrintRBT()

效果展示

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/tyustli/article/details/133428064
GDB
今日推荐