使用 gprof 分析非终止 C 程序

Posted

技术标签:

【中文标题】使用 gprof 分析非终止 C 程序【英文标题】:Profile non-terminating C program using gprof 【发布时间】:2014-09-08 09:45:58 【问题描述】:

我正在尝试使用 gprof 分析程序。关键是在某些情况下,程序不会自行完成,而是使用 Linux 执行时间限制。在这种情况下,不会生成文件“gmon.out”。

我想知道是否有一种方法可以获取某种分析信息,即使在程序超时结束的情况下也是如此。就我阅读here 而言,这是不可能的,所以对于我的问题的任何 cmet 或建议,我将不胜感激。

提前致谢!

【问题讨论】:

【参考方案1】:

如果您确定没有信号处理某个信号,比如说SIGTERM,您可以添加一个调用exit() 的信号处理程序。

然后您可以使用kill -SIGTERM pid 终止您的程序,并且应该创建gmon.out

【讨论】:

您好,感谢您的提示!我按照您的建议添加了信号管理,但由于我使用了_exit,仍然没有创建gmon.out,然后我将_exit替换为exit,文件创建成功。【参考方案2】:

如果您在 gdb 中运行程序或可以将 gdb 附加到程序,您可以使用“p exit(0)”关闭程序并转储配置文件数据。

【讨论】:

以上是关于使用 gprof 分析非终止 C 程序的主要内容,如果未能解决你的问题,请参考以下文章

在终止进程之前保存 gmon.out

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“UICollectionView 必须使用非零布局参数初始化

单击相机时应用程序终止使用图像按钮目标c

strstr() 用于非空终止的字符串

Java 分析 - Tomcat 服务器终止

我啥时候应该使用 Write-Error 与 Throw?终止与非终止错误