使用Graphviz for Windows程序可视化函数调用

时间:2011-06-15 03:03:01

标签: c++ visual-studio gcc profiling graphviz

我遇到了这篇引人入胜的文章(关于reddit)Visualize function calls with 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 c ++编译器是否提供了进入和退出的任何此类分析功能? 这是第一个问题。

第二个问题是我在Windows环境中找不到任何Addr2line utility。基本上它告诉你内存地址的文件名,函数名和行号。我有什么办法可以做Addr2line的工作吗?

2 个答案:

答案 0 :(得分:1)

您可以使用/Gh编译器选项来挂钩函数调用项和/或/GH来挂钩函数调用exit。

here在MSDN上有一个很好的例子。

然后,您可以使用DIA(调试接口访问)SDK获取输入的函数的名称。

here处有一个端到端的例子。

答案 1 :(得分:0)

Visual Studio 2010 Feature Pack 2内置了此功能,适用于使用Visual Studio Ultimate版本的用户。 (好吧,它不是基于Graphviz的,但它是一个函数调用图)