假设我想分析系统中许多应用程序中使用的单个库的使用情况。我只接受统计资料,而不是准确的资料(但那也不错)。
我不想做的是重新编译每个正在运行的程序并提供分析支持。我希望定期或按需将分析信息转储到某个文件中。如果使用应用程序名称或 pid 来分割统计信息,那就太好了。
现在有什么办法可以实现这一目标吗?
示例用法:使用正在运行的系统中的数据分析 glib 库。
最佳答案
看看oprofile 。我认为它完全符合您的要求。
Oprofile 使用硬件计数器采样来分析代码,您可以自定义要在哪个计数器上采样(例如,如果您不需要时间配置文件,则可以在浮点上采样指令计数器并查看代码中执行最多 FP 工作的部分)。对于时间配置文件,速率约为每秒 2000 个样本,因此开销非常低。
生成的摘要数据会告诉您您花费大部分时间的应用程序、加载模块和符号(如果您有符号信息)。您还可以选择分别分析内核空间和用户空间,并且如果需要,可以使用调用路径信息。最新版本的 oprofile 甚至支持分析 JIT 代码,因此它非常全面。
关于linux - 系统范围的连续 Linux 库分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/764246/