iOS开发中的bugiOS开发进阶iOS技术专题

APP崩溃收集和处理(自己写和借助第三方)

2016-04-26  本文已影响791人  wg689

1)自己写崩溃收集

demo 地址:GitHub - wg689/CrashDemo: 自己写代码捕获异常信息

自己写代码捕获异常信息,将捕获到的异常信息在下次联网的时候发给后

1)将UncaughtExceptionHandler1.h UncaughtExceptionHandler1.m 文件拖到项目中

2)AppDelegate.m 中

import "UncaughtExceptionHandler1.h"

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. //调用这个函数就可以收集崩溃信息 InstallUncaughtExceptionHandler();

return YES; }

3)ViewController.m中 [dict setObject:nil forKey:@"kong"];制造崩溃信息

(void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSMutableDictionary *dict = [NSMutableDictionary dictionary]; //这里打开就可以看到控制台输出异常信息 // [dict setObject:nil forKey:@"kong"]; }

4)异常信息输出

2016-04-26 11:53:53.941 CrashDemo[1758:465788] 异常信息

*** setObjectForKey: object cannot be nil (key: kong)( "4 libc++abi.dylib 0x0000000197e72f44 + 16", "5 libc++abi.dylib 0x0000000197e72b10 __cxa_rethrow + 144", "6 libobjc.A.dylib 0x00000001987e4120 objc_exception_rethrow + 44", "7 CoreFoundation 0x0000000183b14d48 CFRunLoopRunSpecific + 552", "8 UIKit 0x00000001892321c8 + 460" )


2)借助第三方平台 友盟

1) 先到友盟平台申请appkey ,appkey 填到代码中(如果集成了环信sdk 如下代码环信sdk中就有 只需要在环信sdk中填上key即可),集体继承方式参照友盟崩溃收集集成方法

-(void)setupUMeng{

//友盟

   NSString *bundleID = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"];

  if (1/*[bundleID isEqualToString:@"com.easemob.enterprise.demo.ui"]*/) {

     [MobClick startWithAppkey:@"554b577267e58e761d******"//这是友盟的appkey

     reportPolicy:BATCH

     channelId:Nil];

   #if DEBUG

       [MobClick setLogEnabled:YES];

   #else

         [MobClick setLogEnabled:NO];

#endif

}

2)代码集成成功了  在后台看得到崩溃的信息,将崩溃的信息导出成.csv后缀的

3)下载终端解析csv文件的umcrashtool   下载链接 友盟-专业的移动开发者服务平台,关于详细的友盟崩溃解析也可以参考这个链接

4) 打开终端 将下载的umcrashtool 和csv 文件拖到终端,终端自动运行解析出csv文件中的崩溃信息在哪个.m 文件,在哪一行

效果如下图

上一篇下一篇

猜你喜欢

热点阅读