在 控制台(console)打印 Stack Trace

创建一个方法(处理异常并输出到控制台):

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

在 app delegate 中添加异常处理器(exception handler):

1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
2 {   
3     NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
4     // Normal launch stuff
5 }

效果如下:

2012-10-27 08:44:29.942 CT[306:fb03] Stack Trace: (
    0   CoreFoundation                      0x016cf03e __exceptionPreprocess + 206
    1   libobjc.A.dylib                     0x01860cd6 objc_exception_throw + 44
    2   CoreFoundation                      0x01677a48 +[NSException raise:format:arguments:] + 136
    3   Foundation                          0x009d12cb -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 116
    4   UIKit                               0x000bf3d7 -[UITableView(_UITableViewPrivate) _endCellAnimationsWithContext:] + 12439
    5   UIKit                               0x000ca6d2 -[UITableView _updateRowsAtIndexPaths:updateAction:withRowAnimation:] + 295
    6   UIKit                               0x000ca711 -[UITableView insertRowsAtIndexPaths:withRowAnimation:] + 55
    7   CT                                  0x0000ef42 -[CTXAddViewController setEditing:animated:] + 434
    8   UIKit                               0x0010de4c -[UIViewController(UINavigationControllerItem) setEditing:] + 49
    9   CT                                  0x0000ec1f -[CTXAddViewController viewDidLoad] + 655
    10  UIKit                               0x00101a1e -[UIViewController view] + 184
    11  UIKit                               0x00100fec -[UIViewController nextResponder] + 34
    12  UIKit                               0x00127f1d -[UIResponder _containsResponder:] + 40
    13  UIKit                               0x001121cb -[UINavigationController defaultFirstResponder] + 83
    14  UIKit                               0x00128df1 -[UIResponder(Internal) _deepestDefaultFirstResponder] + 36
    15  UIKit                               0x00128ea9 -[UIResponder(Internal) _promoteDeepestDefaultFirstResponder] + 36
    16  UIKit                               0x00322508 -[UIWindowController transitionViewDidStart:] + 89
    17  UIKit                               0x000df401 -[UITransitionView _didStartTransition] + 93
    18  UIKit                               0x000e008b -[UITransitionView transition:fromView:toView:] + 1169
    19  UIKit                               0x00321d6c -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:] + 6114
    20  UIKit                               0x00108857 -[UIViewController presentViewController:withTransition:completion:] + 3579
    21  UIKit                               0x001089bc -[UIViewController presentViewController:animated:completion:] + 112
    22  UIKit                               0x001089fc -[UIViewController presentModalViewController:animated:] + 56
    23  UIKit                               0x00470f4a -[UIStoryboardModalSegue perform] + 250
    24  UIKit                               0x004654d0 -[UIStoryboardSegueTemplate perform:] + 174
    25  CoreFoundation                      0x016d0e99 -[NSObject performSelector:withObject:withObject:] + 73
    26  UIKit                               0x0003d14e -[UIApplication sendAction:to:from:forEvent:] + 96
    27  UIKit                               0x0027ba0e -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 145
    28  CoreFoundation                      0x016d0e99 -[NSObject performSelector:withObject:withObject:] + 73
    29  UIKit                               0x0003d14e -[UIApplication sendAction:to:from:forEvent:] + 96
    30  UIKit                               0x0003d0e6 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 61
    31  UIKit                               0x000e3ade -[UIControl sendAction:to:forEvent:] + 66
    32  UIKit                               0x000e3fa7 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 503
    33  UIKit                               0x000e3266 -[UIControl touchesEnded:withEvent:] + 549
    34  UIKit                               0x000623c0 -[UIWindow _sendTouchesForEvent:] + 513
    35  UIKit                               0x000625e6 -[UIWindow sendEvent:] + 273
    36  UIKit                               0x00048dc4 -[UIApplication sendEvent:] + 464
    37  UIKit                               0x0003c634 _UIApplicationHandleEvent + 8196
    38  GraphicsServices                    0x015b9ef5 PurpleEventCallback + 1274
    39  CoreFoundation                      0x016a3195 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
    40  CoreFoundation                      0x01607ff2 __CFRunLoopDoSource1 + 146
    41  CoreFoundation                      0x016068da __CFRunLoopRun + 2218
    42  CoreFoundation                      0x01605d84 CFRunLoopRunSpecific + 212
    43  CoreFoundation                      0x01605c9b CFRunLoopRunInMode + 123
    44  GraphicsServices                    0x015b87d8 GSEventRunModal + 190
    45  GraphicsServices                    0x015b888a GSEventRun + 103
    46  UIKit                               0x0003a626 UIApplicationMain + 1163
    47  CT                                  0x000020dd main + 141
    48  CT                                  0x00002045 start + 53
)
原文地址:https://www.cnblogs.com/submarinex/p/2742113.html