延迟符号解析

时间:2013-01-18 15:35:18

标签: linux elf debug-symbols

我正在研究一些诊断工具,以帮助在嵌入式ARM平台上找到内存问题。由于内存限制,我无法加载设备本身上所有库的所有符号。我需要保存哪些信息才能在以后的其他计算机上解析符号?

我将解析符号的机器是一台x86机器,它有一个交叉工具链和带有所需符号包的gdb。我将从保存在诊断输出中的这些信息中使用什么来解决批处理中的符号?是否有用于解析的库或API?

1 个答案:

答案 0 :(得分:0)

以下信息与Android有关。其中一些部分也被编译为ARM体系结构的ELF文件,因此在您的情况下它可能很有用。

构建过程如下所示:

  1. 使用调试信息(gcc -g ...
  2. 编译所有内容
  3. 然后剥离所有二进制文件并将其打包到系统映像中。但是,每个二进制文件的原始未剥离版本仍然是构建目录中的
  4. 系统映像在目标设备上闪烁。
  5. 因此,要从诊断输出中解析符号,您可以使用arm-linux-androideabi-addr2line。例如:

    ${CROSS_COMPILE}addr2line --demangle -f -e PATH_TO_NOT_STRIPPED_BINARY ADDRESS
    

    可以在此问题中找到其他信息:How to use addr2line

    我还准备了一个非常简单的python脚本,它自动执行这个过程:decode_callstack.py(它适用于Android诊断输出,你需要在使用前更改PREFIX变量)