[GDB] Utilice GDB para dibujar automáticamente árboles rojo-negro

Se requieren conocimientos básicos antes de leer este artículo:
use Python para extender gdb
python para dibujar Graphviz

Utilice GDB para dibujar árboles rojo-negro

La extensión Python de gdb se introdujo en las secciones anteriores. Consulte Extender gdb con python.

Y Python tiene el módulo Graphviz, por lo que puedes usar gdb para llamar a Python y usar Graphviz para dibujar en Python.

Ideas

Establezca un punto de interrupción de GDB donde se inserta el árbol rojo-negro, defina el comando en el punto de interrupción y pase el puntero del árbol rojo-negro a Python como parámetro.

Analizar parámetros en Python, construir sintaxis de puntos y mostrar

ejemplo de código

.gdbinitdocumento

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

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

Mostrar resultados

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/tyustli/article/details/133428064
Recomendado
Clasificación