用于确定Perf中库加载地址的机制

问题描述 投票:0回答:1

[C0如何确定在后处理期间每个加载的图像(例如,共享库)的加载地址。例如,perf使用此信息来使每个符号地址相对于每个已加载图像的开头。如下图(perf report)所示:unwind: _int_malloc...

它是否存储在enter image description here二进制文件或性能分析输出(即elf)中?

linker shared-libraries ip-address trace perf
1个回答
0
投票

仅通过查看ELF可执行文件和库就无法找到它。每次运行可能会有所不同;即使像GDB一样通过性能禁用了ASLR,程序也可能在使用某些后来才加载的可选库的perf.data之前使用mmap(MAP_FIXED),因此dlopen不得不选择与平时不同的地址来映射库。 (正常的动态链接发生在dlopen运行之前,而不是通过dlopen运行,但大概main希望能够记录地址->任何文件支持的映射的文件映射。)

可能是perf将每个ELF对象的运行时基址保存在perf

© www.soinside.com 2019 - 2024. All rights reserved.