分析程序执行的一部分

时间:2019-06-25 12:16:03

标签: c++ linux profiling

我有一个复杂的应用程序,它可以分多个阶段执行。我只想介绍其中一个阶段。

C ++应用程序在Linux x86-64上运行。

此程序需要几分钟才能运行。如果我使用perf来分析整个情况,则结果数据集太大,无法处理perf报告。但是,在这一点上,我仅对概要分析程序的一个阶段的执行感兴趣,该阶段可能需要花费总时间的1/3。也许该数据集将使perf更加易于报告。

理想情况下,我希望遵循“发送SIGUSR1开始配置文件,而SIGUSR2停止配置文件”的思路。到那时,我可以轻松地描述我想要配置文件信息的执行阶段。

我总是可以使用SIGPROF编写自己的(尽管是基本的)探查器,但是有什么方法可以使用现有工具(例如perf)来做到这一点?

1 个答案:

答案 0 :(得分:0)

执行此操作的一种可能方法是将perf附加到现有进程。

因此,启动您的程序,检查其pid。然后在适当的时候使用-p <pid>选项开始配置。并使用CTRL-C或SIGINT停止分析。但是,仅当您不需要多次启动/停止分析时,此技巧才有效,因为很早以前perf的数据附加功能已被删除。

或者也许您可以使用-F降低采样频率,所以结果数据变得更易于处理。