printStackTrace

来源:互联网 发布:博世plc的编程方法 编辑:程序博客网 时间:2024/06/02 04:29
- (void)printStackTrace:(NSException *)e//要写入log文件的信息{    NSString *stack = [[e userInfo] objectForKey:NSStackTraceKey];    NSMutableArray *args = [NSMutableArray arrayWithCapacity:20];    if (stack) {        NSTask *ls = [[NSTask alloc] init];        NSString *pid = [[NSNumber numberWithInt:[[NSProcessInfo processInfo] processIdentifier]] stringValue];        [args addObject:@"-p"];//-p        [args addObject:pid];        [args addObjectsFromArray:[stack componentsSeparatedByString:@"  "]];        // Note: function addresses are separated by double spaces, not a single space.        [ls setLaunchPath:@"/usr/bin/atos"];//xcrun atos        [ls setArguments:args];       // [ls launch];        NSPipe *pipe;        pipe = [NSPipe pipe];        [ls setStandardOutput: pipe];        NSFileHandle *file;        file = [pipe fileHandleForReading];        [ls launch];        NSData *data;        data = [file readDataToEndOfFile];        NSString *string;        string = [[NSString alloc] initWithData: data                                       encoding: NSUTF8StringEncoding];        NSString *strFormat = [NSString stringWithFormat:@"\n\n*************************exception begin\nexception time: %@\n%@\n*************************exception end\n\n",[NSDate date] ,string];        DDLogCError(strFormat);    } else {        DDLogCError(@"No stack trace available.");    }}
0 0
原创粉丝点击