【问题标题】:How to track the exact issue for the crash in iOS如何在 iOS 中跟踪崩溃的确切问题
【发布时间】:2013-02-18 10:07:21
【问题描述】:

当我调试我的 iPhone 应用程序时,我遇到了一个错误并且应用程序崩溃了。我添加了一个异常断点,但它没有指向代码中的任何位置并在 main.m 中崩溃。

在这里,我添加了应用程序崩溃时 XCode 窗口的屏幕截图。

如何从中找到崩溃的确切问题?

有可能吗?请帮忙。

【问题讨论】:

  • 我也遇到过这种问题,但无论如何我都找不到确切的问题。如果有人能在这里指出任何可能的方式,我将不胜感激。 :)
  • 如果您的程序中有一些代码,请显示它们。这样某人就可以到达错误点。
  • 我担心我的代码的哪一部分导致了这个问题,我在不同的VC中随机导航,突然我得到了这个问题。而且,在调试窗口中它没有提到任何代码或功能。这种情况我该怎么办?

标签: ios xcode debugging crash sigabrt


【解决方案1】:

启用 Zoombie 以便您在日志中获得错误描述。

如果您编辑要为其启用僵尸的方案(在“产品”菜单中,选择“编辑方案”),请转到左侧面板中的“运行 Foo.app”阶段,然后选择“参数”右侧的选项卡。然后,您可以将 NSZombieEnabled 添加到“环境变量”部分并将值设置为 YES,就像在 Xcode 3 中一样。

在 Xcode 4.1 及更高版本中,“运行”阶段的“诊断”选项卡上还有“启用僵尸对象”复选框。

【讨论】:

  • 对不起,其实我忘了添加第二个选项,现在也启用了。谢谢:)
  • 我更改了您提到的设置并进行了测试。我再次遇到崩溃问题,但没有显示任何详细信息。
【解决方案2】:

在 XCode 中单击 EditScheme。然后屏幕将如下所示。点击启用僵尸对象。它会在您的日志中显示错误。

【讨论】:

  • 谢谢,其实我忘记了那个选项,将启用它并重试。
  • 对不起,我想墨尔本在你之前说过同样的答案,所以我应该接受他的答案吧?别担心,我给了你一个Upvote,我非常感谢你对确切屏幕截图的帮助,这很容易理解。谢谢:)
  • @Mithuzz。这不仅适用于你。很多程序员会试图理解正确的答案。对于这类问题,给出屏幕截图是更容易接受的答案。我们必须为新程序员提供更好的途径。
【解决方案3】:

添加一个Exception breakpoint,调试器将在崩溃的那一行停止。

【讨论】:

  • 我已经这样做了,它指出了一些其他问题,但是当这个错误发生时,什么也没发生。是否可以从 Debug Navigator 窗口中找到问题?
【解决方案4】:

不确定,但阅读寄存器可能会有所帮助。

首先转到“异常”选项卡,然后使用左下角的 + 号“添加异常断点”。

然后当应用程序崩溃时,点击线程 1 下的“0 objc_exception_throw”

最后在控制台输入:

  • 注册读取 (你应该得到一个寄存器列表)

  • po $rax(通常例外在 'rax' 中)

    (您应该会在控制台上看到异常输出)

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多