Android如何阅读JNI核心转储文件

我正在编写JNI应用程序。 Logcat指出日志文件存在data / log / dumpstate_app_native.txt系统墓碑中的东西。 当我作为媒体设备访问Samsung Infuse时,我没有看到任何这样的文件。 实际上我看不到我的应用程序数据文件? 他们在哪里,我看到其他应用程序包,但在数据期间没有太多。 以下是我在logcat中看到的内容:

dumpstate /data/log/dumpstate_app_native.txt复制/ data / tombstones / tombstone_01到DropBox(SYSTEM_TOMBSTONE)将堆栈跟踪写入到/data/anr/traces.txt

我在设备上search* .txt的媒体设备,什么也没find。

Solutions Collecting From Web of "Android如何阅读JNI核心转储文件"

除非您正在使用模拟器或固定电话,否则您将无法读取逻辑删除文件。 Logcat在debugging级别打印出墓碑(这是在“复制墓碑”消息之前的大型核心转储)。 应该有一个这样的部分:

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工具来确定这些hex地址引用的函数,文件和行号。 在我的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 / local / armeabi / myjnilib.so是包含行号信息的myjnilib.so的版本。

看看这个链接http://bytesthink.com/blog/?p=133

只要确保你有正确的符号与收集的墓碑同步。