这样的c ++工具存在吗? [我不知道该怎么称呼它]

时间:2010-06-07 13:52:49

标签: c++ visual-studio-2008 profiling profiler

我正在尝试弄清楚代码库是如何工作的。我想要一些工具来分析我运行的程序,并告诉我每个线程以什么顺序调用哪些函数。这样的工具存在吗?我会用什么谷歌条款来找到这样的程序?

注意:使用VS2008 / Win7 / C ++

8 个答案:

答案 0 :(得分:7)

我认为通话图可能会对您有所帮助。大多数分析器可以在分析后生成调用图。分析还可以帮助您确定最常使用的代码。

另一种可能性是使用工具生成序列图。这不会特别向您显示运行时期间发生的事情,但它会清楚地说明代码正在做什么。

此致 德克

答案 1 :(得分:6)

分析器或代码覆盖率工具会告诉您。

答案 2 :(得分:5)

您正在搜索分析器。这个StackOverflow thread将帮助您找到一个。

答案 3 :(得分:2)

在linux中,我建议ltrace完全按照你的描述进行操作。我用谷歌搜索“ltrace for windows”并找到了dumbug。这有望成为“ltrace for windows”。

答案 4 :(得分:1)

您正在寻找的是剖析器。在Linux系统上,我会说'gprof',但我无法真正命名MSVC的首选工具。

答案 5 :(得分:1)

WinAPIOverride32 tool,它可能对您的需求有用。

答案 6 :(得分:0)

我最终使用的解决方案是John Panzer's Call Moniter class。这段代码与我的程序一起运行,并在调用时以及它们的全名(包括类)输出函数,当它们完成时,使用缩进来显示函数嵌入其他函数的深度。为了摆脱多余的数据需要一点修改,但它工作得很漂亮。我可能会修改它以输出到excel而不是像调用那样输出到控制台。

感谢大家的回答。看看所有结果,他们都没有完成这项工作,但它帮助我了解发生了什么。

一些建议的答案可能有效,但它们都是我的头脑,或者我无法让它们运作,或者我找不到我想要的功能。

编辑: Call Moniter类最终成为另一个虚假路径。它按照它们被调用的顺序显示函数名称,并嵌套它们以显示哪些函数调用哪个,这很好。我不得不过滤掉一些噪音,这很好。但最后,当我查看结果时,这个班级错过了所有被调用函数的一半!哦,我不知道它是否适用于线程,因为调用线程的函数是一些被跳过的函数。

根据我的理解,我想要的是一个调用图。

答案 7 :(得分:-1)