如何使用callgrind只分析一段时间的程序执行?

时间:2010-03-08 08:21:00

标签: profiling valgrind callgrind

我想使用valgrind进行一些分析,因为它不需要重新构建程序。 (我要概述的程序已经使用“-g”构建)

但是valgrind(callgrind)很慢......所以这就是我要做的事情:

  1. 启动服务器(我想分析该服务器)
  2. 附加到该服务器
  3. 在我在服务器上执行某些操作之前,开始收集配置文件数据
  4. 操作完成后,结束收集配置文件数据
  5. 分析分析数据。
  6. 我可以在Solaris上使用sun studio来做这种事情。 (使用dbx)。我只想知道是否可以使用valgrind(callgrind)做同样的事情?

    由于

3 个答案:

答案 0 :(得分:33)

您应该查看callgrind documentation,并阅读callgrind_control。

  1. 启动您的应用:valgrind --tool=callgrind --instr-atstart=no your_server.x
  2. 见1.
  3. 开始收集个人资料数据callgrind_control -i on
  4. 结束收集个人资料数据callgrind_control -i off
  5. 使用 kcachegrind callgrind_annotate / cg_annotate
  6. 分析数据

答案 1 :(得分:10)

仅对某些功能进行分析时,您还可以从$pager.insertBefore($table).find('div.page-number:last').click(); 标题中找到有用的CALLGRIND_START_INSTRUMENTATIONCALLGRIND_STOP_INSTRUMENTATION,并使用Doomsday's answer选项中的<valgrind/callgrind.h>选项}}

答案 2 :(得分:4)

你没有说什么操作系统 - 我假设Linux - 在这种情况下你可能想看oprofile(免费)或Zoom(不是免费的,但你可以获得评估许可),两者都是其中包括抽样分析器,可以在不重新编译的情况下分析现有代码。缩放更好,更容易使用(它有一个GUI和一些很好的附加功能),但你可能已经在你的系统上有oprofile。