【问题标题】:does such a c++ tool exist? [I dont know what to call it] [closed]这样的c++工具存在吗? [我不知道该怎么称呼它] [关闭]
【发布时间】:2011-02-28 17:21:28
【问题描述】:

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

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

【问题讨论】:

  • 如下所述,您可以使用分析器,但您需要符号(例如 .pdb 或 .map)才能从中获取体面的信息。编写一个为您记录调用的跟踪器实际上非常简单。您可以将 WinDBG 与 WT 命令一起使用,但要做好大量工作的准备。
  • 这个库,我可以假设它是一个.dll,并且有一些退出程序[成功]调用它吗?或者,它是您希望链接到的 .lib 还是 COM 类型库?

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


【解决方案1】:

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

另一种可能性是使用工具生成序列图。这不会具体向您展示在运行时发生了什么,但它会让您清楚地了解代码在做什么。

问候 德克

【讨论】:

  • 调用图是我一直在寻找的。结论信息在下面的答案中。
【解决方案2】:

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

【讨论】:

  • 有趣的是,您的答案如何以大量的赞成票击败了我的答案。我开始认为陈述你知道的事情是一件坏事。 ;-)
  • 很难说。您仅在我之前几秒钟发布,但我的回答提到了不止一个问题的解决方案。
【解决方案3】:

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

【讨论】:

  • +1。绝对是最佳答案。
【解决方案4】:

在 linux 中,我建议 ltrace 完全符合您的描述。我用谷歌搜索“ltrace for windows”并找到dumbug。这有望成为“ltrace for windows”。

【讨论】:

    【解决方案5】:

    您正在寻找的是探查器。在 Linux 系统上,我会说“gprof”,但我无法真正说出 MSVC 的首选工具。

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        我最终使用的解决方案是John Panzer's Call Moniter class。这段代码与我的程序一起运行,并输出带有全名(包括类)的函数,何时调用,何时完成,使用缩进显示函数嵌入其他函数的深度。需要进行一些修改才能消除多余的数据,但效果很好。我可能会将其修改为输出到excel,而不是按调用输出到控制台。

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

        一些建议的答案可能已经奏效,但它们都在我的脑海中,或者我无法让它们运行,或者我找不到我正在寻找的功能。

        编辑: Call Monitor 类最终成为另一个错误线索。它在调用函数时按调用顺序显示函数名称,并将它们嵌套以显示哪些函数调用了哪些函数,这很棒。我必须过滤掉一些噪音,这很好。但是最后,当我查看结果时,这个类错过了所有被调用的函数的足足一半!哦,我不知道它是否可以正常使用线程,因为调用线程的函数是一些被跳过的函数。

        据我了解,我想要的是调用图。

        【讨论】:

        • 稍微整理一下您的答案,然后将其标记为已回答。通过清理我的意思是对页面进行文本引用,而不仅仅是链接。链接可能会过时,但有了足够的信息,下一个用户仍然可以搜索它或类似的东西。例如[约翰装甲。 “自动代码检测”C/C++ 用户杂志,1999 年 1 月]。将问题标记为已回答,即使您自己回答也是如此,这样希望帮助他人的人就不会翻阅已回答的问题,而寻找答案的人也知道该去哪里寻找答案。
        【解决方案8】:
        猜你喜欢
        • 2015-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-27
        • 2014-02-28
        • 1970-01-01
        相关资源
        最近更新 更多