【问题标题】:Visualize function calls with Graphviz for Windows programs使用 Graphviz for Windows 程序可视化函数调用
【发布时间】:2011-06-15 03:03:01
【问题描述】:

我看到了这篇引人入胜的文章(在 reddit 上)Visualize function calls with Graphviz

它解释了如何使用:GNU 编译器工具链、Addr2line 实用程序、自定义粘合代码和 Graphviz 来为您的函数调用创建可视化。

我真的很想在我的代码中实现这一点,但问题是我的代码是基于 Windows 的。我正在使用 Microsoft c++ 编译器。

文章解释了如何使用 GCC 提供的 profiling 函数进行进入和退出:

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 的工作吗?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    here 有一个端到端的例子。

    【讨论】:

      【解决方案2】:

      Visual Studio 2010 Feature Pack 2 为拥有 Visual Studio Ultimate 版本的用户内置了此功能。 (嗯,它不是基于 Graphviz,而是一个函数调用图)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-30
        • 2014-01-15
        • 2019-03-10
        • 2022-08-24
        • 1970-01-01
        • 1970-01-01
        • 2016-04-01
        相关资源
        最近更新 更多