2011-12-01 69 views
10

我正在編寫JNI應用程序。 Logcat指示日誌文件存在data/log/dumpstate_app_native.txt 也是系統邏輯的東西。當我作爲媒體設備訪問Samsung Infuse時,我沒有看到任何此類文件。實際上我看不到我的應用程序數據文件?他們在哪裏,我看到其他應用程序包,但在數據期間沒有太多。以下是我在logcat中看到:Android如何閱讀JNI核心轉儲文件

dumpstate /data/log/dumpstate_app_native.txt 複製/數據/墓碑/ tombstone_01到DropBox的(SYSTEM_TOMBSTONE) 寫的堆棧跟蹤到「/data/anr/traces.txt

我在設備上搜索了* .txt的媒體設備,但什麼也沒找到。

+0

回答任何人? – Androider

回答

10

除非您使用模擬器或固定電話,否則您將無法讀取邏輯刪除文件。 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 
... 

這是縮寫堆棧跟蹤。您需要使用NDK中的addr2line工具來確定這些十六進制地址引用的函數,文件和行號。在我的OSX系統的命令來獲取堆棧跟蹤的第一行是這樣的:

/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 /本地/ armeabi/myjnilib.somyjnilib.so的版本包含行號信息。

+2

還有'ndk-stack',它包含在ndk中 –