[GDB] GDB를 사용하여 자동으로 레드-블랙 트리 그리기

이 글을 읽기 전에 필요한 기본 지식:
Python을 사용하여 gdb Python을 확장하여
graphviz 그리기

GDB를 사용하여 레드-블랙 트리 그리기

gdb의 Python 확장은 이전 섹션에서 소개되었습니다. Python으로 gdb 확장을 참조하세요.

그리고 Python에는 graphviz 모듈이 있으므로 gdb를 사용하여 Python을 호출하고 graphviz를 사용하여 Python으로 그릴 수 있습니다.

아이디어

레드-블랙 트리가 삽입되는 GDB 중단점을 설정하고 중단점에서 명령 명령을 정의한 후 레드-블랙 트리의 포인터를 매개변수로 Python에 전달합니다.

Python에서 매개변수를 구문 분석하고, 도트 구문을 구성하고, 표시합니다.

코드 예

.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

파이썬 파일

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