2011-12-01 14 views
10

Koduję aplikację JNI. Logcat wskazuje, że pliki dziennika istnieją dane/log/dumpstate_app_native.txt Również rzeczy w nagrobkach systemu. Kiedy mam dostęp do Samsung Infuse jako urządzenie multimedialne, nie widzę takich plików. W rzeczywistości nie widzę też plików z danymi aplikacji? Gdzie one są, widzę inne pakiety aplikacji, ale nie wiele w okresie danych. Oto, co widzę w LogCat:Android How To Read JNI Core Dump FIles

dumpstate /data/log/dumpstate_app_native.txt kopiowanie/data/nagrobki/tombstone_01 do Dropbox (SYSTEM_TOMBSTONE) napisał stos ślady na „/data/anr/traces.txt

Zrobiłem wyszukiwanie na urządzeniu jako plik multimedialny dla * .txt i nic nie znalazłem.

+0

odpowiada ktoś? – Androider

Odpowiedz

10

Nie będzie można odczytać plików nagrobków, chyba że używasz emulatora lub zrootowanego telefonu. Logcat wypisuje nagrobek na poziomie debugowania (jest to duże zrzuty pamięci tuż przed komunikatem "Kopiowanie nagrobka"). Powinna istnieć sekcja wyglądająca mniej więcej tak:

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

To jest skrócony stacktrace. Będziesz musiał użyć narzędzia addr2line w NDK, aby określić funkcję, plik i numer linii, do których odnoszą się te adresy szesnastkowe. W moim systemie OSX, polecenie, aby pierwsza linia stacktrace wygląda następująco:

/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 

gdzie myJNIproject/obj/local/armeabi/myjnilib.so jest wersja myjnilib.so że zawiera informacje o numerze linii.

+2

Istnieje również 'ndk-stack', który jest zawarty w Ndk –