Android Как читать JNI Core Dump FIles

Я кодирую приложение JNI. Logcat указывает, что в файлах журналов есть данные /log/dumpstate _app_native.txt Также вещи в системных надгробных плитах. Когда я обращаюсь к Samsung Infuse в качестве медиа-устройства, я не вижу таких файлов. На самом деле я тоже не вижу файлы данных приложений? Где они, я вижу другие пакеты приложений, но не так много в период данных. Вот что я вижу в logcat:

dumpstate/data/log/dumpstate_app_native.txt копирование/данные/надгробные камни /tombstone _01 в DropBox (SYSTEM_TOMBSTONE) Написал трассировки стека в '/data/anr/traces.txt

Я искал устройство в качестве медиа-устройства для *.txt и ничего не нашел.

Ответ 1

Вы не сможете прочитать файлы надгробий, если вы не используете эмулятор или корневой телефон. Logcat распечатывает надгробный камень на уровне отладки (это большой дамп ядра перед сообщением "копирование надгробия" ). Должен быть раздел, который выглядит примерно так:

01-18 16:28:04.334 16759 16759 I DEBUG   :  scr 80000012
01-18 16:28:04.334 16759 16759 I DEBUG   : 
01-18 16:28:04.384 16759 16759 I DEBUG   :          #00  pc 00007f84  /data/data/com.myapp/lib/myjnilib.so
01-18 16:28:04.384 16759 16759 I DEBUG   :          #01  pc 00008f80  /data/data/com.myapp/lib/myjnilib.so
01-18 16:28:04.394 16759 16759 I DEBUG   :          #02  pc 00002c6a  /data/data/com.myapp/lib/myjnilib.so
01-18 16:28:04.394 16759 16759 I DEBUG   :          #03  pc 00002ea8  /data/data/com.myapp/lib/myjnilib.so
01-18 16:28:04.394 16759 16759 I DEBUG   :          #04  pc 00003178  /data/data/com.myapp/lib/myjnilib.so
01-18 16:28:04.394 16759 16759 I DEBUG   :          #05  pc 00011e74  /system/lib/libdvm.so
...

Это сокращенная stacktrace. Вам нужно будет использовать инструмент addr2line в NDK для определения функции, файла и номера строки, на которые ссылаются эти шестнадцатеричные адреса. В моей системе OSX команда для получения первой строки stacktrace выглядит следующим образом:

/opt/android-ndk-r7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi-addr2line -f -e myJNIproject/obj/local/armeabi/myjnilib.so 0x00007f84

где myJNIproject/obj/local/armeabi/myjnilib.so - это версия myjnilib.so, которая содержит информацию о номере строки.

Ответ 2

взгляните на эту ссылку http://bytesthink.com/blog/?p=133

просто убедитесь, что вы правильно синхронизировали символы с собранными надгробиями.