快速定位异常代码

程序在设备上运行时发生闪退,调试的时候发现未捕捉的异常,但是这些异常信息很有限,不能有效定位代码段,需要为app加入未捕捉异常:

摘自:http://www.cnblogs.com/dqshll/archive/2012/08/29/2661933.html

在AppDelegate.m中添加函数:

void uncaughtExceptionHandler(NSException*exception){
    NSLog(@"CRASH: %@", exception);
    NSLog(@"Stack Trace: %@",[exception callStackSymbols]);
    // Internal error reporting
}

这里会打印出异常时的call stack, 也是发生crash时候, 最有价值的信息.

然后在程序入口处向下面这样调用它:

复制代码
-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{   
    NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
    // Normal launch stuff
}
复制代码
NSSetUncaughtExceptionHandler 就是告诉系统, 当发生异常时, 使用这个函数作为回调.
这样之后, 发生crash时, 就可以看到打印出的call stack, 就可以很方便的定位到发生crash的那行代码.

 

posted @ 2014-10-13 11:39  1oo1  阅读(220)  评论(0编辑  收藏  举报