当前位置: 首页 > news >正文

【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 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()

效果展示

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

http://www.lryc.cn/news/179100.html

相关文章:

  • 使用Vue3+elementPlus的Tree组件实现一个拖拽文件夹管理
  • 小谈设计模式(7)—装饰模式
  • nginx 多层代理 + k8s ingress 后端服务获取客户真实ip 配置
  • 6种最常用的3D点云语义分割AI模型对比
  • UG NX二次开发(C#)-获取UI中选择对象的handle值
  • win10,WSL的Ubuntu配python3.7手记
  • 02-Zookeeper实战
  • 【C语言深入理解指针(1)】
  • 模拟实现简单的通讯录
  • rabbitMQ死信队列快速编写记录
  • 数位dp,338. 计数问题
  • 如何解决git clone http/https仓库失败(403错误)
  • 华为云云耀云服务器L实例评测 | 实例评测使用之硬件性能评测:华为云云耀云服务器下的硬件运行评测
  • Elasticsearch:使用 Elasticsearch 进行语义搜索
  • JVM的主要组成及其作用
  • 会议AISTATS(Artificial Intelligence and Statistics) Latex模板参考文献引用问题
  • 2023最新外贸建站:WordPress搭建外贸独立站零基础小白保姆级教程
  • HTTP请求交互基础(基于GPT3.5,持续更新)
  • 小谈设计模式(6)—依赖倒转原则
  • JetBrains常用插件
  • 【C++哈希应用】位图、布隆过滤器
  • Qt 编译纯c的C99的项目, error: undefined reference to `f()‘
  • TensorFlow入门(五、指定GPU运算)
  • Unity - 实践: Metallic流程贴图 转 Specular流程贴图
  • 第三章:最新版零基础学习 PYTHON 教程(第四节 - Python 运算符—Python 逻辑运算符及示例)
  • 如何做好测试?(三)功能测试 (Functional Testing, FT)
  • Ubuntu-Server-22.04安装桌面+VNC
  • 职业规划,什么是职业兴趣 - 我喜欢做什么?
  • 基于Java的高校学生党员发展流程管理系统设计与实现(源码+lw+部署文档+讲解等)
  • 【NLP的python库(03/4) 】: 全面概述