网站信息化建设总结网站优化包括哪些内容
阅读本文前需要的基础知识
用 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 43commands 1
print-rbt *tree->root
endcommands 2
print-rbt *tree->root
endcommands 3
print-rbt *tree->root
endcommands 4
print-rbt *tree->root
end
python 文件
import gdb
import osclass 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()
效果展示