文档章节

iOS记录崩溃信息

ok_
 ok_
发布于 2015/08/24 22:24
字数 315
阅读 14
收藏 0

需求

        需要知道APP闪退的时候,到底发生了什么

解决

       oc自带函数,可以监控到app发生异常

      NSSetUncaughtExceptionHandler(&catchLog);

        catchLog为C语言函数,传入函数指针,当发生异常时候,可以捕捉

走起

    1.CatchLog.h    我使用了ASIHttpRequest

#import <Foundation/Foundation.h>
#import "ASIHTTPRequest.h"

@interface CatchLog : NSObject <ASIHTTPRequestDelegate>

+ (void)catchExceptionLog;

+ (void)uploadTheLog;

@end

     CatchLog.m

    

#import "CatchLog.h"
#import "ASIHTTPRequest.h"
#import "ASIFormDataRequest.h"

@implementation CatchLog

void catchLog(NSException *exception){
    NSLog(@"捕捉到了异常");
    NSArray *arr = [exception callStackSymbols];//得到当前调用栈信息
    NSString *reason = [exception reason];//非常重要,就是崩溃的原因
    NSString *name = [exception name];//异常类型
    
    DDLogError(@"异常类型:%@",name);
    DDLogError(@"崩溃原因:%@",reason);
    DDLogError(@"栈信息:%@",arr);
    
    //设置标志代表这次错误信息,需要下次打开APP时上传
    [[NSUserDefaults standardUserDefaults] setObject:@YES forKey:@"isUploadLog"];
}

+ (void)catchExceptionLog{
    NSSetUncaughtExceptionHandler(&catchLog);
}

#pragma mark --上传日志
+ (void)uploadTheLog{
    NSURL *url = [NSURL URLWithString:@"http://myapp.tunnel.mobi/app/uploadLog"];
    NSString *filePath = [[NSUserDefaults standardUserDefaults]objectForKey:@"logPath"];
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    
    NSData *data = [NSData dataWithContentsOfFile:filePath];
    NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
//    [request setValue:@"123" forKey:@"logContent"];
    [request setPostValue:str forKey:@"logContent"];
//    [request setFile:filePath forKey:@"logFile"];
//    request.delegate = self;
//    [request setDidFinishSelector:@selector(responseComplete)];
    [request setCompletionBlock:^{
        NSLog(@"上传成功");
    }];
    [request startSynchronous];
}

@end

    filePath路径从本地取出,log日志具体可参参考上篇日志

    2. 在AppDelegate中didFinishLaunchingWithOptions中,写入代码

 [CatchLog catchExceptionLog];

    3.测试代码可以使用

[NSDictionary dictionaryWithObject:nil forKey:nil];

    

© 著作权归作者所有

ok_

ok_

粉丝 0
博文 11
码字总数 2400
作品 0
济南
程序员
私信 提问
NativeScript 5.4.0 发布,JS 构建原生安卓/IOS 应用

Bug修复 如果加载组件失败则抛出(#7186)(b7abb3d) android / button:可能不正确的按钮视觉状态(#7190)(2a02360) devtools-ios:确保在主线程(c60f74d)上运行UI修改,关闭#721...

左华栋
05/22
643
0
iOS朋友圈,视频播放器、钓鱼小游戏、玻璃动画源码

iOS精选源码 模仿抖音App的ye m切换框架 将所有类型的推送封装成API,提供OC和Swift双版本调用demo2.0 波浪动画 【Swift/Objective-C】强劲的日期选择控件 利用Masonry 和YYlable ,FDTempla...

sunnyaigd
2017/11/06
19
0
应用性能接入框架 - Matrix for iOS/macOS

Matrix for iOS/macOS 是一款微信团队研发并日常使用的性能探针工具,目前集成在 iOS 和 macOS 微信的 APM(Application Performance Manage)平台中使用。Matrix for iOS/macOS 建立了一套 ...

匿名
04/04
2.7K
1
研究称iOS的应用程序崩溃率高于Android

Crittercism进行了一次罕见的智能机应用程序稳定性研究,结果显示iOS的应用要比Android来的不稳定,它们在运行时更容易崩溃。 iOS系统的应用崩溃较为明显,所有错误中,iPhone、iPad和iPod的...

红薯
2012/02/04
1K
12
OSC 第 71 期高手问答 — iOS 开发和崩溃优化

OSCHINA 本期高手问答(5月6日- 5月12日)我们请来了 @MaximLi(李民湘)为大家解答关于 iOS 开发和崩溃优化方面的问题。 李民湘,现 Testin 云测 iOS 高级研发工程师,擅长 Windows mobile...

叶秀兰
2015/05/06
4.7K
20

没有更多内容

加载失败,请刷新页面

加载更多

新架构、新角色:TiDB Community Upgrade!

作者:Jian Zhang 经过几年的发展,TiDB 社区已经逐渐成熟,但是随着社区的发展壮大,我们逐渐感受到了现在社区架构上的一些不足。经过一系列的思考和总结,我们决定升级和调整目前社区组织架...

TiDB
20分钟前
5
0
jquery qrcode库提示not function

jquery qrcode 这个库能用,但是必须在初始化的时候,官方给的使用方法是 引入qrcode的库文件后,在js中写以下 html <div id="qrcode"></div> js jQuery('#qrcode').qrcode({ render: ......

shikamaru
25分钟前
9
0
MySQL数据库去重的简单方案

利用 distinct 对需要处理的字段进行去重 select distinct 字段名 from 表名 利用group by select * from 表名 group by 字段名 利用having select * from 表名 group by 字段名 having 字段...

FeanLau
27分钟前
9
0
字符串转换成整数

实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该...

蔚蓝_晴天
38分钟前
8
0
Eureka客户端续约及服务端过期租约清理源码解析

在之前的文章:EurekaClient自动装配及启动流程解析中,我们提到了在构造DiscoveryClient时除了包含注册流程之外,还调度了一个心跳线程: scheduler.schedule( new Ti...

Java学习录
50分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部