First throw call stack: 不打印方法名

最近发现 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

}

这样我们看到的就跟之前的一样了

原文地址:https://www.cnblogs.com/lion-witcher/p/10235653.html