如何开始和停止为 gprof 收集配置文件数据
Posted
技术标签:
【中文标题】如何开始和停止为 gprof 收集配置文件数据【英文标题】:How to start and stop collecting profile data for gprof 【发布时间】:2015-10-09 12:19:06 【问题描述】:我正在使用 gprof 分析 C++ 程序的平面轮廓。但是,由于我不想进入配置文件的昂贵的设置和拆卸代码,我想触发仅针对某个块收集数据。我想做类似的事情:
void foo()
--- start collecting ---
do stuff
--- stop collecting
有什么想法吗?
【问题讨论】:
【参考方案1】:gprof
的文档描述了分析数据的生成由一个简单的-pg
编译器开关控制。
因此,在我看来,将昂贵的设置和拆卸代码分解到单独的源文件中,并在没有-pg
编译器开关的情况下编译该源文件,这似乎是合乎逻辑的。
【讨论】:
gprof 有两个数据源:来自 itimer 的周期性样本(setitimer
将要求内核每秒发送 100 次特殊信号;低开销)以获取配置文件;和来自编译器工具的调用图信息(每次调用的高开销)。为某些源关闭 -pg
将仅禁用第二个数据源,这将加速该文件中的代码,但不会完全关闭分析。 (第一个源应该通过 -pg 选项启用到链接步骤以获取 gmon.out 文件)【参考方案2】:
您必须使用 -pg 在不同的源中构建您的关键功能,然后
【讨论】:
以上是关于如何开始和停止为 gprof 收集配置文件数据的主要内容,如果未能解决你的问题,请参考以下文章
Logstash:如何配置 Metricbeat 及 Logstash 为 Elasticsearch 8.x 收集数据