【问题标题】:Good free profiler that supports MingW32 please? [closed]请问支持MingW32的好免费分析器吗? [关闭]
【发布时间】:2010-08-30 02:40:01
【问题描述】:

我在另一个帖子中问,如何分析我的东西,人们给了我很多很好的答复,除了当我尝试使用几个免费的分析器时,例如 AMD Codeanalyst,它们只支持 Microsoft PDB 格式,并且MingW 无法生成这些。

那么,什么分析器可以帮助我分析使用 Lua 脚本并使用 MingW 编译的多线程应用程序?

编辑:gprof 是废话,说我为什么不想要它的 awnser 就在现场......如果我得到它认为麻烦的所有功能,它们都与问题无关我有(有某种行为会导致大幅减速,我不知道为什么,gprof 也想不通)

【问题讨论】:

  • 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。

标签: c++ profiling lua mingw


【解决方案1】:

如果您不想使用 gprofI'm not surprised

我花了一段时间才弄清楚如何在 GDB 下做到这一点,但这就是我所做的。让应用程序运行并将焦点转移到应用程序的输出窗口,即使它只是一个 DOS 框。然后我按下 Control-Break 键(虽然它很慢)。然后 GDB 停止,我执行 info threads,它会告诉我有哪些线程,通常是 1 和 2。我切换到我想要的线程,例如 thread 2。然后我执行 bt 来查看堆栈跟踪。这准确地告诉我当我按下 Control-Break 时它在做什么。我这样做了很多次,比如 10 次或 20 次,如果出现性能问题,无论是什么问题,它都会显示在堆栈的多个样本上。程序制作得越慢,我在看到它之前必须采集的样本就越少。

有关其工作原理和原因的完整分析,请参阅该链接。

附:当我启动 GDB 时,我也会处理 SIGINT stop print nopass

【讨论】:

  • 我建议 thread apply all bt 来显示所有堆栈跟踪。
【解决方案2】:

gprof不做吗?

我以为 MingW 提供了一个 gprof 版本来配合它。

【讨论】:

    【解决方案3】:

    如果你想分析 Lua 脚本,我可以建议使用 LuaProfiler:http://luaprofiler.luaforge.net/manual.html。效果很好。

    我强烈建议您实现某种计时器或您自己的分析器来获得一个简单的分析工具。一个非常简单的方法是只输出代码中某些点被命中的时间,将这些时间输出到一个文本文件中,然后编写一个简单的 lua 或 python 脚本来解析文件并过滤感兴趣的信息。

    我在我的大部分爱好项目中都使用了这个(或稍微复杂一点的)版本的配置文件,事实证明它非常有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-09
      • 2011-04-19
      • 2011-06-18
      • 2010-10-01
      • 1970-01-01
      • 2010-09-17
      • 2013-06-10
      • 1970-01-01
      相关资源
      最近更新 更多