【iOS】代码开发中bug管理:bugHD和bugtags

转一篇别人写的崩溃调试 iOS崩溃调试 http://www.cocoachina.com/ios/20160115/15009.html

一、原生代码处理

正常代码使用中的几种崩溃处理:

1.NSException收集崩溃信息

// 将系统提供的获取崩溃信息函数写在这个方法中,以保证在程序开始运行就具有获取崩溃信息的功能
  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     // 将下面C函数的函数地址当做参数
     NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
     return YES;
  }
  // 设置一个C函数,用来接收崩溃信息
  void UncaughtExceptionHandler(NSException *exception){
      // 可以通过exception对象获取一些崩溃信息,我们就是通过这些崩溃信息来进行解析的,例如下面的symbols数组就是我们的崩溃堆栈。
      NSArray *symbols = [exception callStackSymbols];
      NSString *reason = [exception reason];
      NSString *name = [exception name];
  }
  
  //代码调用第2种方法:获取崩溃统计的函数指针
  NSUncaughtExceptionHandler *handler = NSGetUncaughtExceptionHandler();

2.dSYM

每次Archive一个包之后,都会随之生成一个dSYM文件。每次发布一个版本,我们都需要备份这个文件,以方便以后的调试。

需要使用Xcode自带的symbolicatecrash工具来将.Crash和.dSYM文件进行符号化

3、通过Xcode查看设备崩溃信息

选择window-> devices -> 选择自己的手机 -> view device logs 就可以查看我们的崩溃信息了。

4、苹果自带崩溃统计工具

苹果在Xcode中为我们集成了崩溃统计功能,在Window->Organizer->Crashes中可以看到

需要用户在iPhone中进行设置,设置->隐私->诊断与用量->诊断与用量数据(iOS8以下在通用中设置),选择自动发送,并与开发者共享即可


二、第三方开源代码分析统计

1.bugHD

来源http://bughd.com/doc/ios-customize

2.bugtags

来源http://help.bugtags.com/hc/kb/article/124400/

http://help.bugtags.com/hc/kb/article/68482/

3.KSCrash

https://github.com/kstenerud/KSCrash

4.友盟


总结:

第三方统计工具并不是用的越多越好,使用多个崩溃收集第三方会导致NSSetUncaughtExceptionHandler()函数指针的恶意覆盖,导致有些第三方不能收到崩溃信息。

第三方统计工具并不是用的越多越好,使用多个崩溃收集第三方会导致NSSetUncaughtExceptionHandler()函数指针的恶意覆盖,导致有些第三方不能收到崩溃信息。

你可能感兴趣的:(【iOS】代码开发中bug管理:bugHD和bugtags)