好的免费分析器,支持MingW32好吗?

时间:2010-08-30 02:40:01

标签: c++ profiling lua mingw

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

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

编辑:gprof是垃圾,说明我不想要它的芒果,当场是正确的...如果我得到的所有功能都很麻烦,那么它们中的任何一个都与问题无关我有(有某种行为导致大幅减速,我无法理解为什么,而gprof也无法解决这个问题)

3 个答案:

答案 0 :(得分:4)

如果您不想使用 gprof I'm not surprised

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

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

P.S。当我启动GDB时,我也处理SIGINT stop print nopass

答案 1 :(得分:2)

gprof没有这样做吗?

我认为MingW提供了一个gprof版本。

答案 2 :(得分:0)

如果你想描述Lua脚本,我可以建议使用LuaProfiler:http://luaprofiler.luaforge.net/manual.html。它工作得非常好。

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

对于我的大部分业余爱好项目,我都使用了这个(或稍微复杂一点)的性能分析版本,并且它已被证明非常有用。