IOS Crash捕获
来源:互联网 发布:apache ant zip maven 编辑:程序博客网 时间:2024/04/29 21:52
IOS Crash ,就两种情况:一种是异常,另一种是中断[信号量]。
#include <libkern/OSAtomic.h>
#include <execinfo.h>
// 系统信号截获处理方法
void signalHandler(int signal);
// 异常截获处理方法
void exceptionHandler(NSException *exception);
const int32_t _uncaughtExceptionMaximum = 10;
void signalHandler(int signal)
{
volatile int32_t _uncaughtExceptionCount = 0;
int32_t exceptionCount = OSAtomicIncrement32(&_uncaughtExceptionCount);
if (exceptionCount > _uncaughtExceptionMaximum) // 如果太多不用处理
{
return;
}
// 获取信息
NSMutableDictionary *userInfo =
[NSMutableDictionary dictionaryWithObject:[NSNumber numberWithInt:signal] forKey:UncaughtExceptionHandlerSignalKey];
NSArray *callStack = [ExceptionHandler backtrace];
[userInfo setObject:callStack forKey:SingalExceptionHandlerAddressesKey];
// 现在就可以保存信息到本地[]
}
void exceptionHandler(NSException *exception)
{
volatile int32_t _uncaughtExceptionCount = 0;
int32_t exceptionCount = OSAtomicIncrement32(&_uncaughtExceptionCount);
if (exceptionCount > _uncaughtExceptionMaximum) // 如果太多不用处理
{
return;
}
NSArray *callStack = [ExceptionHandler backtrace];
NSMutableDictionary *userInfo =[NSMutableDictionary dictionaryWithDictionary:[exception userInfo]];
[userInfo setObject:callStack forKey:ExceptionHandlerAddressesKey];
// 现在就可以保存信息到本地[]
}
@implementation ExceptionHandler
//获取调用堆栈
+ (NSArray *)backtrace
{
void* callstack[128];
int frames = backtrace(callstack, 128);
char **strs = backtrace_symbols(callstack,frames);
NSMutableArray *backtrace = [NSMutableArray arrayWithCapacity:frames];
for (int i=0;i<frames;i++)
{
[backtrace addObject:[NSString stringWithUTF8String:strs[i]]];
}
free(strs);
return backtrace;
}
// 注册崩溃拦截
-(void)installExceptionHandler
{
NSSetUncaughtExceptionHandler(&exceptionHandler);
signal(SIGHUP, signalHandler);
signal(SIGINT, signalHandler);
signal(SIGQUIT, signalHandler);
signal(SIGABRT, signalHandler);
signal(SIGILL, signalHandler);
signal(SIGSEGV, signalHandler);
signal(SIGFPE, signalHandler);
signal(SIGBUS, signalHandler);
signal(SIGPIPE, signalHandler);
}
@end
- IOS Crash捕获
- IOS程序crash捕获
- IOS Crash捕获
- iOS Swift Crash的捕获
- iOS Swift Crash的捕获
- iOS 捕获Crash 发送Bug邮件
- iOS 捕获Crash 发送Bug邮件
- iOS 捕获Crash 发送Bug邮件
- iOS程序异常crash捕获与拦截
- [IOS]程序异常crash捕获与拦截
- IOS程序异常crash捕获与拦截
- IOS程序异常crash捕获与拦截
- IOS程序异常crash捕获与拦截
- IOS程序异常crash捕获与拦截
- iOS crash捕获异常崩溃日志
- crash 捕获
- iOS开发中捕获Crash 发送Bug邮件
- iOS收集未捕获的异常,防止应用crash
- c#中new和override的用法区别
- 从零开始配置 Ubuntu 开发环境
- 【C】判断一个字符串是否是整数
- POJ2155 Matrix 二维树状数组应用
- AJAX基础学习1
- IOS Crash捕获
- 隐马尔可夫模型(HMM)攻略
- 付大哥大哥是个大范甘迪
- 设计模式学习笔记之状态模式
- JS模板引擎jTemplates使用笔记详解
- HDOJ_1392 Surround The Trees (凸包模版)
- Principle of Computing (Python)学习笔记(7) DFS Search + Tic Tac Toe use MiniMax Stratedy
- POJ 3414 Pots
- POJ 1273 Drainage Ditches(网络流,最大流)