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

时间:2016-06-23 17:45:11

标签: ios objective-c xcode crash nsexception

我正在开发一个应用程序,我必须跟踪崩溃。有一个限制,我不能使用任何第三方来源,如Twitter的Fabric框架来处理崩溃日志记录。

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

我在做什么:

在我的app委托的didFinishLaunchingWithOptions方法中,我创建了自己的异常处理程序:

    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];

Here is my Stack Trace

他们有什么方法可以实现我的目标吗?

我试过从SO那里得到这些解决方案,但他们没有给我带来任何好处:

Solution 1

Solution 2

0 个答案:

没有答案