我有一个复杂的应用程序,它可以分多个阶段执行。我只想介绍其中一个阶段。
C ++应用程序在Linux x86-64上运行。
此程序需要几分钟才能运行。如果我使用perf来分析整个情况,则结果数据集太大,无法处理perf报告。但是,在这一点上,我仅对概要分析程序的一个阶段的执行感兴趣,该阶段可能需要花费总时间的1/3。也许该数据集将使perf更加易于报告。
理想情况下,我希望遵循“发送SIGUSR1开始配置文件,而SIGUSR2停止配置文件”的思路。到那时,我可以轻松地描述我想要配置文件信息的执行阶段。
我总是可以使用SIGPROF编写自己的(尽管是基本的)探查器,但是有什么方法可以使用现有工具(例如perf)来做到这一点?
答案 0 :(得分:0)
执行此操作的一种可能方法是将perf
附加到现有进程。
因此,启动您的程序,检查其pid。然后在适当的时候使用-p <pid>
选项开始配置。并使用CTRL-C或SIGINT停止分析。但是,仅当您不需要多次启动/停止分析时,此技巧才有效,因为很早以前perf
的数据附加功能已被删除。
或者也许您可以使用-F
降低采样频率,所以结果数据变得更易于处理。