perf堆栈分析需加-g调试信息

张开发
2026/4/15 3:11:37 15 分钟阅读

分享文章

perf堆栈分析需加-g调试信息
在 Linux 环境下使用perf采集堆栈样本时,要求程序编译时加入-g调试信息,主要是为了解决采样数据中的地址符号化问题。perf工具的核心功能是进行性能采样,它会记录程序在采样时刻正在执行的指令地址(即程序计数器 PC 的值)。然而,原始的内存地址(如0x7f1234567890)对人类来说毫无意义,无法直接对应到源代码中的函数、行号或变量。因此,必须将这些地址转换为人类可读的函数名和源代码位置,这个过程就依赖于编译时嵌入的调试信息。核心原理:调试信息的作用调试信息(通常由-g选项生成)是编译器在生成可执行文件或共享库时额外嵌入的一段数据,它建立了机器指令地址与源代码位置(如文件名、函数名、行号、变量名等)之间的映射关系。perf在采样后,会利用这些信息将采集到的地址“翻译”成有意义的符号。关键概念作用对perf分析的影响符号表(Symbol Table)存储函数和全局变量的名称与地址映射。可解析函数名,但无法获取行号等细节。调试信息(Debug Info)包含符号表,并额外存储行号、局部变

更多文章