【问题标题】:Not informative exception info on xCode 4.6关于 xCode 4.6 的非信息异常信息
【发布时间】:2013-02-28 01:15:30
【问题描述】:

如果我的应用程序崩溃,我会在 All Output 窗口上获取信息,如下所示:

未捕获的异常:* -[NSPlaceholderMutableString initWithString:]: 零参数 2013-02-28 04:09:15.209 Cpp[948:907] 终止应用程序 由于未捕获的异常 'NSInvalidArgumentException',原因:' -[NSPlaceholderMutableString initWithString:]: 无参数' * 第一次抛出调用栈:(0x3336b3e7 0x3b05c963 0x3336b307 0x33bf0eb5 0x33c0ab8b 0xd16ed 0xd0a63 0xc3e79 0xc5cfd 0x3336ead4 0x332c628f 0x332c5de3 0x39be081b 0x3336d737 0x332c5208 0x3336ead4 0x332c628f 0x3930bc5b 0x39348ce1 0x333408f7 0x3334015d 0x3333ef2f 0x332b223d 0x332b20c9 0x36e9033b 0x351ce2b9 0xc0109 0xc00a0) libc++abi.dylib:终止调用抛出异常(lldb)

而调用栈是这样的:

在哪里可以解决问题?调用堆栈上的方法在哪里?我的代码行在哪里? xCode 有什么问题以及如何解决这个问题?

【问题讨论】:

  • 查找您发布的堆栈跟踪下方的滑块。移动滑块,使堆栈跟踪显示更多详细信息。
  • rmaddy,我从那个窗口发布了所有数据,别以为我是个傻瓜。
  • 查看您发布的屏幕截图。查看线程 1。注意它显示了第 0、13、14 和 15 行。第 1-12 行在哪里?在 Xcode 中,当您遇到断点或崩溃时,请查看显示堆栈跟踪的屏幕底部。有一个滑块。将滑块拇指一直向右移动。这将向您显示所有这些缺失的细节。
  • 我也不知道 1-12 行在哪里...屏幕底部的所有数据都在问题的主体上。
  • 我刚刚告诉你如何在 Xcode 中查看第 1-12 行。请再次阅读我之前的评论。

标签: ios xcode exception crash


【解决方案1】:

这是我为获取堆栈跟踪所做的事情。

在您的 AppDelegate.m 文件中:

void uncaughtExceptionHandler(NSException *exception) {

    NSLog(@"Call Stack: %@", exception.callStackSymbols);
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);

    // The rest of your method here...
}

【讨论】:

  • 谢谢。但是 xCode 调试器有什么问题?有调试器吗?
  • 出于某种原因,他们决定不再需要在应用崩溃时显示堆栈跟踪的详细信息。它仅适用于 iOS 5 及更高版本。不知道他们为什么做出这样的改变。我发布的代码带回了堆栈跟踪打印输出。
  • 再次感谢您。我讨厌苹果。也适用于黑色 iPhone 5:)
  • 是的,有一个调试器。您可以在代码中添加断点,并确保选择左上角的“断点”按钮。
  • @SimonGermain 我正在使用 Xcode 4.6。我的项目的基础 SDK 是 6.1,部署目标是 5.0。请参阅我刚刚添加到问题中的评论。另一个技巧是转到 Xcode 中的断点窗格。点击左下角的 + 按钮。选择添加“异常断点”。添加后,右键单击异常断点并选择将其移动到“用户”。
猜你喜欢
  • 2013-02-15
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 2013-06-18
  • 2011-03-20
相关资源
最近更新 更多