iOS平台一套完善的Crash Report解决方案

原文:http://blog.csdn.net/langresser_king/article/details/8593845

 最开始想iOS和Android都做了,后面尝试了下android上面的崩溃收集,困难程度超出我的想象,也可以说几乎不可能实现像iOS下面一样实用且方便的崩溃收集系统(1.有堆栈等信息,不会产生卡死等副作用。  2.专指jni崩溃,java的崩溃很容易处理)。  这个有一点要反思一下,在困难的地方浪费时间不如把简单的东西做好,那么多赚大钱的游戏也是各种不完美,但是玩家不会在意程序是否牛x,技术是否高明,只要玩家想玩的核心点做到极致就可以了。


        1、在崩溃的时候使用 (这里)提到的方式来获取堆栈直接上传到服务器。  这个可以进行粗略定位,并且是明文的,不需要额外工具转换格式。   缺点是,不能定位到具体行。但是很多情况下这个也是足够使用的。

        2、使用plcrashreporter 获取到崩溃日志文件。   在游戏下一次开始运行的时候上传这个崩溃文件到服务器。  我们获取到这个文件后具体分析过程:

                 a、将发布版本时备份的dSYM符号文件和崩溃信息文件(xx.plcrash)  放到一个文件夹

                 b、需要用到的工具  plcrashutil (这个在plcrashreporter发布包的Tools文件夹下)     symbolicatecrash(这个在xcode程序文件夹下   /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/)

                c、运行命令

    

[plain]  view plain copy
  1. ./plcrashutil convert --format=iphone live_report.plcrash > test.crash  
  2. export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer  
  3. ./symbolicatecrash test.crash DemoCrash-iOS-Device.app.dSYM > crash_readable.log  
第一个命令将plcrash转换为苹果标准崩溃格式,第二个命令可以根据dSYM符号文件解析出崩溃信息,可以定位到具体行,例如:

[plain]  view plain copy
  1. Thread 0 Crashed:  
  2. 0   DemoCrash-iOS-Device                0x00002780 stackFrame (main.m:41)  
  3.   
  4. Thread 1:  
  5. 0   libsystem_kernel.dylib              0x368ad3a8 kevent + 24  
  6. 1   libdispatch.dylib                   0x376dabc9 _dispatch_mgr_wakeup + 1  




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值