我正在尝试将NSException对象记录到文本文件中,为了做到这一点,我这样做:
///logging modle
#import <Foundation/Foundation.h>
@interface TextLogModel : JSONModel
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *reason;
@property (nonatomic, strong) NSArray *stack;
@end
/// logging function
-(BOOL)log:(NSException*)ex{
BOOL result = NO;
TextLogModel* mod = [[TextLogModel alloc] init];
mod.name = ex.name;
mod.reason = ex.reason;
mod.stack = ex.callStackReturnAddresses;
NSArray* arr = ex.callStackReturnAddresses;
NSString* json = [[[JsonHelper alloc] init] SerializeObject:mod];
......some more code...
return result;
}
我得到的JSON结果是
{“name”:“NSRangeException”,
“堆叠”:[140735685894180,140735694292846,140735685893869,140735684895768,4295503469,4294976416,4294976329,140735605055272,140735605054845,4295032657,4294975994,140735748324567,140735605907121,140735605995846,140735605995618,140735748324567,140735605995455,140735748324567,140735605988531,140735606350671,140735605982054, 140735611658972,140735604907142,140735604892178,140735604013928,140735603475012,4294985938,4294975620]
“原因”:“ - [__ NSCFString
substringWithRange:]:范围{0,9223372036854775807}越界; 字符串长度21“}
问题
堆栈未转换为可读格式。
非常感谢您提供的任何帮助。
答案 0 :(得分:1)
您可以先使用callStackSymbols
代替callStackReturnAddresses
。但即使这样也不会给你所有的符号。那是因为信息不存在(它不是可执行文件的一部分,因为在执行过程中不需要它)。
如果您想生成像Xcode或崩溃报告工具一样的完整回溯,那么在编译时,您将需要在应用旁边生成的dSYM文件。
并且您无法通过此应用实时执行此操作,因为您需要一些iOS应用无法使用的特定工具。
如果您仍然想要这样做,请查看崩溃符号,如果您有什么不明白的话,请询问其他具体问题。