【问题标题】:How to force a program compiled with '-pg' dump its stat info when it is still running?如何强制使用“-pg”编译的程序在仍在运行时转储其统计信息?
【发布时间】:2012-01-19 04:33:33
【问题描述】:

我正在使用非开源库使用 C++(g++) 进行开发。 每次我运行程序时,lib 都会崩溃(它会双重释放一些内存)。

现在我的程序没问题了。但这不利于分析。我使用 -pg 来分析程序。由于崩溃,不会生成“gmon.out”。所以我根本无法分析它。

问题: 如何分析“崩溃”程序(使用 gprof)。

PS。 valgrind 可以分析崩溃的程序。

问候!

【问题讨论】:

  • 如果 valgrind 工作正常,您可以使用 callgrind 和 massif 工具将其用于分析。
  • 1) 修复错误。 2) 不要对 gprof 抱太大期望。人们使用它是因为它就在那里。 There are much better ways to do performance tuning.
  • @Mike Dunlavey:谢谢,这个链接很有帮助,但正如我提到的,lib 没有打开,所以我无法修复它:)
  • 好的,所以如果你想看看如何在代码崩溃之前加速你的代码,这个方法是有效的。

标签: c gcc profiling coredump gprof


【解决方案1】:

您可以从程序中调用一个函数来转储配置文件数据(与-pg 链接时自动安装为atexit 处理程序的函数相同),但我不知道它叫什么。

最简单的方法是在程序中的适当位置插入一个exit(0); 调用。或者,您可以在 GDB 中设置断点并使用call exit(0)(除了调试程序如果中途停止会影响配置文件数据)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2017-03-25
    • 2012-10-08
    相关资源
    最近更新 更多