ndk-stack无法正常工作

use*_*600 20 java-native-interface android android-ndk

我按如下方式调用ndk-stack:

cat file_temp | ~/workspace/android-ndk-r6b/ndk-stack -sym /home/xyz/trunk/apk/obj/local/armeabi/
Run Code Online (Sandbox Code Playgroud)

它找到了崩溃指纹,但未能显示堆栈分析.打印错误是:

ndk-stack: elff/elf_file.cc:102: static ElfFile* ElfFile::Create(const char*): Assertion `read_bytes != -1 && read_bytes == sizeof(header)' failed. Stack frame #00  pc 43121300  Aborted
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢.

小智 1

这是 ndk-stack 程序无法读取共享库的未剥离版本。

发生特定崩溃的原因是存在与模块名称匹配的文件,但它的大小不足以包含 ELF 标头。

要做的事情:

  1. 检查通过提供的目录中包含的文件-sym是否正确(并且没有被截断)。

  2. 删除被截断的文件或小于几百字节的文件。

如果您好奇,ndk-stack 的源代码位于 android 源代码树中的ndk/sources/host-tools/ndk-stack