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 文件,在哪一行
效果如下图
网友评论