可以附加到正在运行的进程的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 ++分析器?的主要内容,如果未能解决你的问题,请参考以下文章