Визуализация вызовов функций с помощью программ Graphviz для Windows - PullRequest
0 голосов
/ 15 июня 2011

Я сталкивался с этой увлекательной статьей (на reddit) : Визуализация вызовов функций с помощью Graphviz

Она объясняет, как можно использовать: набор инструментов компилятора GNU,Утилита Addr2line, пользовательский код для склеивания и Graphviz для создания визуализации вызовов вашей функции.

Я бы очень хотел реализовать это в своем коде, за исключением того, что мой код основан на Windows.И я использую компилятор Microsoft c ++.

В статье рассказывается об использовании функций профилирования, предоставляемых GCC для входа и выхода:

void __cyg_profile_func_enter( void *func_address, void *call_site )
                                __attribute__ ((no_instrument_function));

void __cyg_profile_func_exit ( void *func_address, void *call_site )
                                __attribute__ ((no_instrument_function));

Существуют ли такие функции профилирования для входа и выхода, предоставляемые Microsoft?компилятор с ++?Это была первая проблема.

Вторая проблема заключается в том, что я не смог найти никакой утилиты Addr2line для среды Windows.В основном это говорит вам имя файла, имя функции и номер строки адреса памяти.Могу ли я сделать то, что делает Addr2line?

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

Вы можете использовать опцию компилятора /Gh для перехвата ввода вызова функции и / или /GH для перехвата выхода из вызова функции.

Есть хороший пример для MSDN на здесь .

Затем можно использовать SDK DIA (доступ к интерфейсу отладки), чтобы получить имя функции, которая была введена.

Здесь есть полный пример этого на здесь.

0 голосов
/ 15 июня 2011

В Visual Studio 2010 Feature Pack 2 встроена эта функция для тех, кто использует Ultimate выпуск Visual Studio.(Ну, это не на основе Graphviz, но это график вызова функции)

...