可以附加到正在运行的进程的c ++分析器?

Posted

技术标签:

【中文标题】可以附加到正在运行的进程的c ++分析器?【英文标题】:c++ profiler that can attach to a running process? 【发布时间】:2010-04-27 00:27:48 【问题描述】:

我有一个用 c++ 编写的程序,我想对其进行分析,并且我想在开始和停止分析时避免重新启动它。理想情况下,我会同时分析 CPU 使用率和内存分配。有什么工具可以让我这样做吗?我在 Linux 上运行。

【问题讨论】:

你在哪个平台上?视窗? Linux? 【参考方案1】:

免费

    oprofile perf SystemTap(可能需要一个 RedHat/CentOS 发行版)

不是免费的

    VTune

【讨论】:

【参考方案2】:

我的建议是Zoom from RotateRight - 您可以从他们的网站下载免费的 30 天评估。

【讨论】:

++ 是的,Zoom 是性能部分的好工具。我不知道内存部分,但我通常发现如果由于内存分配过多而导致缓慢,它会在性能调整中表现出来。【参考方案3】:

如果您可以使用简单的指标,在​​过去,我已经实现了一个简单的分析器。跟踪内存和时间。跟踪每个函数的开始和停止,在开始和停止处打印一行。如果重要的话,跟踪之前和之后的记忆。将所有这些都由您可以在外部更改的运行时变量控制。在 Web 应用程序中,它可能是一个额外的 post/get 参数。在胖客户端程序中,它可能是一个额外的开关。

然后,在运行时,您可以开始收集数据。我过去也添加了多个级别,以便进行选择性和更详细的数据收集。

祝你好运。

【讨论】:

【参考方案4】:

你可以试试 valgrind。它是一组不同的模块组合成一个整洁的包

【讨论】:

【参考方案5】:

将指标添加到您的代码中。使用 gprof http://linuxgazette.tuwien.ac.at/100/vinayak.html 进行配置文件。

【讨论】:

以上是关于可以附加到正在运行的进程的c ++分析器?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将 gdb 附加到崩溃的进程(又名“即时”调试)

分析正在运行的 Python 进程的内存使用情况

使用 dtrace 分析 C 代码

perf 在 Linux 中运行进程

C#语句可以生成非连接的MSIL

鸿蒙内核源码分析(进程镜像篇)|ELF是如何被加载运行的?