采集到的 Native 堆栈每行包含 #00 pc 0x3538 libtest-native.so 之类的信息,需要用 NDK 的 addr2line 配合带调试信息的 unstripped 库进行翻译:
addr2line -C -f -e /path/to/unstripped/libtest-native.so 0x3538
-C进行 C++ name demangle,把_Z...还原为Namespace::Class::Method形式。-f输出函数名。-e指定带调试信息的.so文件。
工作原理:
addr2line加载.so中的 DWARF 调试信息段,构建机器码地址到源代码行号的映射表。- 在映射表中查找地址
0x3538所在函数及具体源文件、行号。 - 同时还原符号修饰名以输出可读的 C++ 签名。
最终可定位到形如 CrashCore::makeArrayIndexOutOfBoundsException() 与 CrashCore.cpp:51 这类精确位置,便于排查根因。




