17

In Objective-C, Whenever an application crashes, I can get stack trace to see where is the last method that causes the error by using this code in AppDelegate

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 {
     NSSetUncaughtExceptionHandler(&myExceptionHandler);
     return YES;
 }

void myExceptionHandler(NSException *exception)
{
    NSArray *stack = [exception callStackSymbols];
    NSLog(@"Stack trace: %@", stack);
    
    NSLog(@"MyExceptionHandler");
}

and it will print the stack trace log to console which I can use to debug the cause of the problem instead of ending up at main.m with no information

So how can I do this in Swift?

SaintTail
  • 6,160
  • 4
  • 31
  • 51

1 Answers1

4

If I understand you correctly, I think what you are looking for is an exception breakpoint, which functions just like a regular breakpoint but is called whenever an exception is thrown. That way, it will stop your application right where the exception was thrown, so you can see the method, line of code, and variable values at the moment of the crash.

This can be set by going to the Breakpoint Navigator tab in the Navigator, clicking the plus at the bottom left and selecting "Add Exception Breakpoint ".

The Exception Breakpoint can than be edited with various options by right-clicking on it and selecting "Edit Breakpoint".

Robert
  • 5,735
  • 3
  • 40
  • 53
dcgoss
  • 2,147
  • 3
  • 20
  • 31