llvm-addr2line 是解析 C++ 崩溃堆栈的核心工具,其工作原理依赖 debug so 文件中的两样东西。第一是 DWARF 调试信息,编译器在开启调试选项后会生成这份「地图」,包含每条机器指令地址对应的源文件和行号、所属函数及参数、内联函数调用关系等。例如堆栈中的 pc 0000000000006f98 这个程序计数器地址,通过 DWARF 信息就能精确定位到具体的 .cpp 文件和行号。第二是 C++ 符号逆向重整(Demangling),编译器会将函数名进行名称重整以支持函数重载,llvm-addr2line 会执行逆向重整将不可读的符号名还原为原始的 C++ 函数签名,方便开发者阅读和定位问题。




