이 글을 읽기 전에 필요한 기본 지식:
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()
결과 보여줘