我正在研究一些诊断工具,以帮助在嵌入式ARM平台上找到内存问题。由于内存限制,我无法加载设备本身上所有库的所有符号。我需要保存哪些信息才能在以后的其他计算机上解析符号?
我将解析符号的机器是一台x86机器,它有一个交叉工具链和带有所需符号包的gdb。我将从保存在诊断输出中的这些信息中使用什么来解决批处理中的符号?是否有用于解析的库或API?
答案 0 :(得分:0)
以下信息与Android有关。其中一些部分也被编译为ARM体系结构的ELF文件,因此在您的情况下它可能很有用。
构建过程如下所示:
gcc -g ...
)因此,要从诊断输出中解析符号,您可以使用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变量)