2011-12-01 14 views
10

Estoy codificando la aplicación JNI. Logcat indica que existen archivos de registro data/log/dumpstate_app_native.txt También cosas en las lápidas del sistema. Cuando accedo a Samsung Infuse como dispositivo multimedia, no veo ningún archivo de este tipo. De hecho, tampoco veo mis archivos de datos de aplicación? Dónde están, veo otros paquetes de aplicaciones pero no mucho en el período de datos. Esto es lo que veo en Logcat:Android Cómo leer archivos JNI Core Dump

dumpstate /data/log/dumpstate_app_native.txt copia/datos/lápidas/tombstone_01 a DropBox (SYSTEM_TOMBSTONE) Has escrito trazas de la pila a '/data/anr/traces.txt

Hice la búsqueda en el dispositivo como dispositivo multimedia para * .txt y no encontré nada.

+0

answers anyone? – Androider

Respuesta

10

No podrá leer los archivos Tombstone a menos que esté utilizando un emulador o un teléfono rooteado. Logcat imprime la piedra sepulcral en el nivel de depuración (es ese gran volcado del núcleo justo antes del mensaje "copiando piedra sepulcral"). Debe haber una sección que se parece a esto:

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 
... 

Esta es la pilatrace abreviada. Tendrá que usar la herramienta addr2line en el NDK para determinar la función, el archivo y el número de línea a los que se refieren esas direcciones hexadecimales. En mi sistema OSX, el comando para obtener la primera línea de la StackTrace se ve así:

/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 

donde myJNIproject/obj/local/armeabi/myjnilib.so es la versión de myjnilib.so que contiene información del número de línea.

+2

También hay 'ndk-stack', que está incluido en el ndk –