ios CrashReport解决方案

来源:互联网 发布:ubuntu联网 编辑:程序博客网 时间:2024/06/06 18:00

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

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

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

      b、需要用到的工具  plcrashutil (这个在plcrashreporter发布包的Tools文件夹下)     symbolicatecrash(这个在xcode程序文件夹下  

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources

                c、运行命令   

  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 
./plcrashutil convert --format=iphone live_report.plcrash > test.crashexport DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer./symbolicatecrash test.crash DemoCrash-iOS-Device.app.dSYM > crash_readable.log

第一个命令将plcrash转换为苹果标准崩溃格式,第二个命令可以根据dSYM符号文件解析出崩溃信息,可以定位到具体行,例如:

 

  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