Android程序崩溃退出的时候,会将崩溃的堆栈信息保存在/data/tombstones目录下。该目录需要ROOT权限才能够访问。所以为了访问该路径,手机必须先ROOT破解。jni或者java代码崩溃的信息都被记录。该目录下会有九个tombstones_0(1-9),生成的崩溃信息会循环写入该文件中,测试之前可以讲所有的文件删除,就可以得到唯一的一个崩溃日志。生成的文件记录了详细的堆栈信息。
为了拷贝到电脑上,需要通过adb shell进入手机终端,然后su,获取root权限,接着拷贝文件到sdcard上,退出adb shell,之后,通过adb pull /sdcard/tombstone_00 E:拷贝到E盘
该文件详细记录了代码崩溃时候的具体信息,包括了崩溃的堆栈,如果能够获取到该信息,就可以通知堆栈了解崩溃点的信息,但是一般情况下,我们看不到该文件。
当我们发现/data目录为空的情况下,实际上表示我们没有root访问权限,(root是最高级的访问权限,而不是启动的时候的访问文件的权限,这个权限需要对android手机进行权限进行破解)
注意
查看tombstons文件,发现很多情况下,没有提供源码错误的函数名称和源码的错误行号,可以通过ndk-stack.exe 程序对崩溃日志再次定位
$NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi -dump tombstons
例子
D:\Development\Android\android-ndk-r10b\ndk-stack.exe–sym armeabi-v7a –dump E:\docs\tombston_01 > E:/detail.txt
附录:
不同的手机遇到空指针的时候,处理的方式是不一样的,小米手机直接闪退,而华为平板依然能够直接运行,跳过崩溃的错误,说明测试多种机型的重要性。
参考
/blog/1463035