最近发现 Xcode 崩溃信息里,不打印方法名了。
打印出来的都是十六进制地址:
*** First throw call stack:
(0x184767164 0x1839b0528 0x1846c2020 0x10476a0fc 0x18dd21a00 0x18ddc8eb8 0x18ddc8358 0x18ddc7d5c 0x18ddc77d8 0x18ddc76d8 0x18dd1ee18 0x1887ab948 0x1887afad0 0x18871c31c 0x188743b40 0x188744980 0x18470ecdc 0x18470c694 0x18470cc50 0x18462cc58 0x1864d8f84 0x18dd855c4 0x1046ac1b0 0x18414c56c)
这就导致了,我们无法直观的看到崩溃的方法,不能快速定位崩溃的代码。
要解决这个问题也很简单,各位看官请往下看
首先
定义一个函数,并在程序中尽早调用
void uncaughtExceptionHandler(NSException*exception) {
NSLog(@"CRASH: %@", exception);
NSLog(@"Stack Trace: %@",[exception callStackSymbols]);
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
#ifdef DEBUG
//这句话的意思就是告诉系统,当发生异常时,使用这个函数作为回调。
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
#endif
}
这样我们看到的就跟之前的一样了