Ответ 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, которая содержит информацию о номере строки.