IOS下捕获异常并生成异常堆栈日志
2014-10-11 14:47
393 查看
在appDidFinishLaunching函数中添加:
添加函数:
添加头文件:
NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler); [self addSigaction];
添加函数:
void UncaughtExceptionHandler(NSException *exception) { NSArray *storeFilePath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *doucumentsDirectiory = [storeFilePath objectAtIndex:0]; //crashReport path NSString *carshReportPath = [doucumentsDirectiory stringByAppendingPathComponent:@"CrashReport.txt"]; NSArray *callStack = [exception callStackSymbols]; //exception callStack NSString *name = [exception name]; //exception name NSString *reason = [exception reason]; //exception reason NSString *strUrl = [NSString stringWithFormat:@"Exception Name:\n%@\nException Reason:\n%@\nCallStackSymbols:\n%@",name,reason,[callStack componentsJoinedByString:@"\n"]]; //write if([strUrl rangeOfString:@"[ZIosEnv performSelector:]"].location == NSNotFound) { [strUrl writeToFile:carshReportPath atomically:YES encoding:NSUTF8StringEncoding error:nil]; } } - (void)addSigaction { //对于用NSSetUncaughtExceptionHandler不能捕获的异常利用unix标准的signal机制处理 struct sigaction mySigAction; mySigAction.sa_sigaction = stacktrace; mySigAction.sa_flags = SA_SIGINFO; sigemptyset(&mySigAction.sa_mask); sigaction(SIGQUIT, &mySigAction, NULL); sigaction(SIGILL , &mySigAction, NULL); sigaction(SIGTRAP, &mySigAction, NULL); sigaction(SIGABRT, &mySigAction, NULL); sigaction(SIGEMT , &mySigAction, NULL); sigaction(SIGFPE , &mySigAction, NULL); sigaction(SIGBUS , &mySigAction, NULL); sigaction(SIGSEGV, &mySigAction, NULL); sigaction(SIGSYS , &mySigAction, NULL); sigaction(SIGPIPE, &mySigAction, NULL); sigaction(SIGALRM, &mySigAction, NULL); sigaction(SIGXCPU, &mySigAction, NULL); sigaction(SIGXFSZ, &mySigAction, NULL); }
添加头文件:
#include <signal.h>
相关文章推荐
- Android全局捕获异常并生成崩溃日志文件的工具类
- iOS异常捕获-堆栈信息的解析
- iOS中捕获日志与异常示例详解
- iOS crash捕获异常崩溃日志
- 捕获异常崩溃日志(iOS)
- iOS 日志管理异常捕获组件LFLogManager
- iOS-iOS异常捕获和崩溃日志
- 自定义未捕获异常时输出的日志为空或日志文件没有生成
- 捕获异常、存sd卡、自定义封装json(含网络工具类)、生成Json格式、传log日志到服务器、app崩溃友好重启
- c# 捕获的异常写到日志里
- iPhone开发如何捕获提交异常日志
- ios捕获异常
- .net捕获全局异常并且记录日志、多线程方式发送邮件提醒
- 简单的异常处理--生成xml异常日志
- iOS已发布应用中对异常信息捕获和处理 推荐
- iPhone开发 捕获提交异常日志
- iOS已发布应用中对异常信息捕获和处理
- iOS已发布应用中对异常信息捕获和处理
- 经营你的iOS应用日志(二):异常日志
- 在我的iOS App中捕获这样的错误日志,什么原因呢?