博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取crash日志
阅读量:6566 次
发布时间:2019-06-24

本文共 1625 字,大约阅读时间需要 5 分钟。

  hot3.png

h文件

//

//  CatchCrash.h

//  bcleaner

//

//  Created by dt-mac on 2017/6/1.

//  Copyright © 2017年 DT. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

CatchCrash : NSObject

void uncaughtExceptionHandler(NSException *exception);

 

m文件

//

//  CatchCrash.m

//  bcleaner

//

//  Created by dt-mac on 2017/6/1.

//  Copyright © 2017年 DT. All rights reserved.

//

 

#import "CatchCrash.h"

 

@implementation CatchCrash

//在AppDelegate中注册后,程序崩溃时会执行的方法

void uncaughtExceptionHandler(NSException *exception)

{

    //获取系统当前时间,(注:用[NSDate date]直接获取的是格林尼治时间,有时差)

    NSDateFormatter *formatter =[[NSDateFormatter alloc] init];

    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

    NSString *crashTime = [formatter stringFromDate:[NSDate date]];

    //异常的堆栈信息

    NSArray *stackArray = [exception callStackSymbols];

    //出现异常的原因

    NSString *reason = [exception reason];

    //异常名称

    NSString *name = [exception name];

    

    //拼接错误信息

    NSString *exceptionInfo = [NSString stringWithFormat:@"crashTime: %@ Exception reason: %@\nException name: %@\nException stack:%@", crashTime, name, reason, stackArray];

    

    //把错误信息保存到本地文件,设置errorLogPath路径下

    //并且经试验,此方法写入本地文件有效。

    NSString *errorLogPath = [NSString stringWithFormat:@"%@/Documents/error.log", NSHomeDirectory()];

    NSError *error = nil;

    BOOL isSuccess = [exceptionInfo writeToFile:errorLogPath atomically:YES encoding:NSUTF8StringEncoding error:nil];

    if (!isSuccess) {

        DLog(@"将crash信息保存到本地失败: %@", error.userInfo);

    }

}

@end

 

使用

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);

。。。

}

 

 

转载于:https://my.oschina.net/sccx/blog/912771

你可能感兴趣的文章
express web的一款mvc框架
查看>>
windows7下安装MongoDB数据库
查看>>
【EASYDOM系列教程】之 DOM 元素树
查看>>
# vue.js 之 对vue.js基础理解
查看>>
webpack源码阅读——npm脚本运行webpack与命令行输入webpack的区别
查看>>
Visual Studio 20年
查看>>
js 上下拖动显示ajax数据(自适应手机版)
查看>>
java的观察者模式
查看>>
Express.js 中的 Sessions 如何工作?(译)
查看>>
ionic之点击放大图片
查看>>
前端计划——面试题总结-CSS篇
查看>>
慕课网_《微信授权登录》学习总结
查看>>
[elixir! #0043] 精确到 1bit 的字符串处理
查看>>
简单快速的开发WEB应用, PHP 框架 Lemon 介绍
查看>>
Web自动化之Headless Chrome概览
查看>>
【133天】尚学堂高淇Java300集视频精华笔记(71-72)
查看>>
剖析 Laravel 计划任务--事件属性
查看>>
通过setTimeout处理click,dblclick,mousedown等事件的冲突
查看>>
实体服务是一种反模式
查看>>
《Git in Practice》作者访谈:关于Git的八个问题
查看>>