gpt4 book ai didi

gcc - gperftools CPU 分析器究竟是如何启动的?

转载 作者:行者123 更新时间:2023-12-04 04:06:40 28 4
gpt4 key购买 nike

gperftools documentationlibprofiler应该链接到目标程序中:

$ gcc myprogram.c -lprofiler

(不改变程序的代码)。

然后程序应该使用特定的环境变量运行:
CPUPROFILE=/tmp/profiler_output ./a.out

问题是:怎么样 libprofile有机会在仅加载分析器但未调用其功能时启动和完成分析器吗?

该库中没有构造函数( proof )。
All occasions of "CPUPROFILE"在库代码中不要指任何启动分析器的地方。

我没有想法,下一步该往哪里看?

最佳答案

根据链接网页的文档,在链接库下,它描述了 -lprofiler 步骤与使用 LD_PRELOAD 选项链接共享对象文件相同。

共享对象文件与头文件不同。头文件包含编译程序时查找的函数声明,因此函数的名称解析,但名称只是名称,而不是实现。共享对象文件 (.so) 包含函数的实现。如需更多信息,请参阅 the following StackOverflow answer .

Source file of /trunk/src/profiler.cc在第 182 行,有一个 CPUProfiler 构造函数,它根据 CPUPROFILE 环境变量(第 187 行和第 230 行)检查是否应该启用分析。

然后它在第 237 行调用 Start 函数。根据此文件中的注释,析构函数在第 273 行调用 Stop 函数。

为了回答你的问题,我相信 Line 132 CpuProfiler CpuProfiler::instance_;是 CpuProfiler 被实例化的那一行。

gperftools 文档中缺乏明确性是已知问题,请参阅 here .

关于gcc - gperftools CPU 分析器究竟是如何启动的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13619974/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com