如何在使用Objective C发生崩溃时获取行号,方法名称和类名称

我正在开发一个应用程序,我必须跟踪崩溃。 有一个限制,我不能使用Twitter的Fabric架构等第三方来处理崩溃logging。

目前我只能得到崩溃的原因。 我无法得到确切的崩溃点。

我在做什么:

在我的应用程序委托的didFinishLaunchingWithOptions方法我做了我自己的exception处理程序:

  NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler); 

uncaughtExceptionHandler —-

 void uncaughtExceptionHandler(NSException *exception) { NSLog(@"CRASH: %@", exception); NSLog(@"callStackSymbols: %@", [exception callStackSymbols]); NSLog(@"callStackReturnAddresses: %@", [exception callStackReturnAddresses]); NSLog(@"reason: %@", [exception reason]); NSLog(@"name: %@", [exception name]); NSLog(@"%s %d %s %s", __FILE__, __LINE__, __PRETTY_FUNCTION__, __FUNCTION__); // Internal error reporting } 

我用viewDidLoad方法崩溃了我的应用程序:

  NSArray *myary; myary = [NSArray arrayWithObjects:@"sad", nil]; NSString *str = [myary objectAtIndex:22]; 

这是我的堆栈跟踪 。

他们有什么办法达到我想要的?

我试图从这些解决scheme,但他们不给我任何领导:

解决scheme1

解决scheme2