Android应用的异常捕获
请确保Linux或者Mac的依赖包都已安装。成功编译之后,我们需要用到两个文件,一是minidump_stackwalk(src/processor/minidump_stackwalk),另一个是dump_sys(src/tools/linux/dump_sysm/dump_syms)。我们将这两个文件拷贝到工作目录备用。同时,我们将$AndroidProject/build/intermediates/ndkBuild/debug/obj/local/armeabi/libtest_google_breakpad.so和上一步生成的dmp文件也拷贝到工作目录。接下来我们就开始进行dmp文件的分析。 生成Symbol文件 我们首先采用dump_syms生成了libtest_google_breakpad.so的symbol,然后读取了symbol文件的第一行,需要的信息是这一串十六进制的version code。接下来我们将Symbol文件按照固定路径进行放置: 至此,Symbol文件就准备完毕。 分析Symbol 然后我们打开result.txt,就可以发现有如下类似结果: ![]() 这样,一个清晰的Crash Stack Trace就出现了。 3.如何提示用户发送错误信息我们在前面已经成功的捕获了Java异常和Native异常,那么接下来要做的就是顺理成章的处理,只要提示用户将我们需要的Java栈和Native Dmp文件发送给我们,我们就可以进行问题排查和修复了。由于篇幅原因,这里就给出一个思路,我们可以在Java Excpetion和 Native DumpCallback的时候,新起一个进程,在这个进程里面进行日志上传,甚至可以弹出一个Activity告知用户,提升用户体验。如何在Native DumpCallback新开进程并弹出Activity,这又是一个较大的话题,我们以后有机会再一起探讨。:-D 总结当应用上线之后,脱离了Logcat提供的便利,开发者应该如何获取错误信息进行异常修复,本文提供了一些随手可行的思路,包含了Java层和Native层不同的处理办法,通过实例代码步步深入,希望带给大家一起启发,同时解决生产上的一些实际问题。 ![]() (编辑:171手机网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |