2011-11-21 71 views
20

我NDK調用堆棧如下:NDK堆棧不工作

cat file_temp | ~/workspace/android-ndk-r6b/ndk-stack -sym /home/xyz/trunk/apk/obj/local/armeabi/ 

它發現墜毀的指紋,但無法告訴我堆棧分析。打印的錯誤是:

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 

任何想法?

謝謝。

+0

提供的信息太少。你在什麼操作系統上?你在使用什麼終端客戶端?什麼意思「打印的錯誤是」?你爲什麼不使用'ndk-stack'腳本的'-dump'標誌? –

+0

該錯誤暗示我不能讀取二進制文件。也許你應該告訴它通過在參數列表中追加連字符( - )來從標準輸入讀取? –

+0

看看[我的答案](http://stackoverflow.com/questions/4359720/how-to-use-ndk-in-android-project/10136832#10136832)。簡單的方法開始使用NDK –

回答

1

這是ndk-stack程序無法讀取共享庫的未分割版本。

發生特定崩潰是因爲文件存在與模塊名稱匹配,但它不足以包含ELF標頭。

可以做的事:

  1. 檢查包含在經過-sym提供的目錄中的文件是正確的(而不是截斷)。

  2. 刪除截短的文件或小於幾百字節的文件。

如果你很好奇,對於NDK棧源代碼是在android源碼樹下ndk/sources/host-tools/ndk-stack