如何在Swift中获得堆栈跟踪错误?

Sai*_*ail 10 exception ios swift

在Objective-C中,每当应用程序崩溃时,我都可以通过使用此代码获取堆栈跟踪以查看导致错误的最后一个方法的位置 AppDelegate

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

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

    NSLog(@"MyExceptionHandler");
}
Run Code Online (Sandbox Code Playgroud)

它会将堆栈跟踪日志打印到控制台,我可以使用它来调试问题的原因,而不是在main.m没有信息的情况下结束

那我怎么能在Swift中做到这一点?

dcg*_*oss 5

如果我理解正确,我认为您正在寻找的是一个异常断点,它的功能就像一个常规断点,但在抛出异常时被调用。这样,它将在抛出异常的地方停止您的应用程序,因此您可以看到崩溃时的方法、代码行和变量值。

这可以通过进入设置断点导航器中的标签导航,单击加左下角,选择“添加例外断点”。

通过右键单击异常断点并选择“编辑断点”,可以使用各种选项编辑异常断点。

  • 这与 StackTrace 相差甚远。后者在生产模式下需要以字符串形式存在,而不仅仅是在游乐场/沙箱中。 (6认同)