1. 测试奔溃日志写入文件
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 将下面C函数的函数地址当做参数
NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
NSArray *ljArray = @[@"swed",@"drf"];
NSLog(@"%@",ljArray[5]);
2. 奔溃日志写入文件
// 设置一个C函数,用来接收崩溃信息
void UncaughtExceptionHandler(NSException *exception){
// 可以通过exception对象获取一些崩溃信息,我们就是通过这些崩溃信息来进行解析的,例如下面的symbols数组就是我们的崩溃堆栈。
NSArray *symbols = [exception callStackSymbols];
NSString *reason = [exception reason];
NSString *name = [exception name];
NSString *ljSymbolsStr =@"";
for (NSInteger i = 0; i < symbols.count; i++) {
ljSymbolsStr = [NSString stringWithFormat:@"%@\r\n%@",ljSymbolsStr,symbols[i]];
}
NSString *ljValue = [NSString stringWithFormat:@"1.name:%@\r\n2.reason:%@\r\n3.symbols:%@",name,reason,ljSymbolsStr];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths firstObject];
NSString *ljpath = [NSString stringWithFormat:@"%@/ljerror",documentsDirectory];
NSError *error = nil;
[ljValue writeToFile:ljpath atomically:YES encoding:NSUTF8StringEncoding error:&error];
}
3.实验结果
可以用xcode---window---下载包内容
然后可以看到appdata,然后在Document文件夹下可以看到刚刚写入堆栈的文件ljerror
截图如下: