Одна из самых полезных вещей, которые я когда-то делал, - рисование графиков моим приложением ...
В приложении, которое имело сложную структуру данных, специализированную для работы (стандартная хеш-таблица в этом случае не работала ;-) У меня было приложение, которое выводило скрипт ".dot", инструмент для точек graphviz мог разобрать.
Это было сделано с помощью процедуры дампа (хорошо, метод, это был C ++), который выводил заголовок .dot
digraph g {
затем прошел мою структуру данных и написал нижний колонтитул
}
В структуре прогулки он записал каждый указатель с
SOURCE -> DESTINATION
где Source - это адрес памяти ссылающегося объекта, предварительно подготовленного с помощью O (O213435354), а Destination - это объект, на который указывает тот же формат.
В начале каждого объекта также написано
SOURCE [ .... ]
с ... являющимися данными объекта.
Всякий раз, когда приложение находилось в «интересном» состоянии, я сбрасывал график и затем использовал точечный инструмент из graphviz для его визуализации. Таким образом, я довольно легко обнаружил множество ошибок указателя, глаз построен так, чтобы видеть правильные структуры в строках ...
Кстати, я до сих пор регулярно использую graphviz , так как довольно неплохо писать и редактировать графики с помощью текстового редактора, а затем инструмент визуализирует их. Если мне нужно нарядить графы .dot для избалованной аудитории, я загружаю их в OmniGraffle на моем Mac. (А мои коллеги, использующие ПК, думают, что у меня есть некоторые способности супергероев диаграмм, потому что с этой комбинацией я получаю графики в 10 раз быстрее, чем они, когда они используют Visio)