【问题标题】:How to test where is app crashing?如何测试应用程序崩溃的位置?
【发布时间】:2012-05-10 23:16:01
【问题描述】:

我的应用程序有时会在导航栏导航时崩溃,并且在控制台日志中除此之外没有错误 ->

(lldb)

如何检查哪里出错了?

【问题讨论】:

标签: iphone objective-c ios xcode


【解决方案1】:

在 Xcode 中,转到 Product > Edit Scheme > Diagnostics > Enable Zombie Object

现在运行应用程序并检查控制台。

【讨论】:

  • 太棒了,就是这样。现在它向我显示了错误的确切位置。一直开着可以吗?
  • 由于开启Zombies意味着对象占用的内存区域永远不会被释放,对内存分配会有很大的拖累。因此在调试时使用它是可以的,但您不想使用此设置发布您的产品。
【解决方案2】:

尝试从

启用僵尸对象

produt>edit schems> 启用僵尸

【讨论】:

  • 太棒了,就是这样。现在它向我显示了错误的确切位置。一直开着可以吗?
  • 是的,但当你将应用程序部署到应用商店时就不行
  • 并且更可取的是永远不要在设备上,因为这也会将释放的对象保留在内存中。当您想将其部署到将其发送到应用商店的设备中时,您可以避免启用它
【解决方案3】:

a recent answer I posted here:

当调试器停止时,转到“调试导航器”并确保底部的滑块一直向右。

从引发异常的地方向下扫视,最终您应该会看到自己的代码。单击相应的方法/函数名称,代码将在编辑器中打开。

如果您在堆栈跟踪中没有看到您自己的任何方法,则异常可能已通过performSelector 样式调用传递,在这种情况下堆栈跟踪已消失。如果是这种情况,您可以通过添加“On Throw”异常断点来获得更好的信息。首先切换到“断点导航器”:

然后点击加号,选择“添加异常断点...”

创建一个“On Throw”断点:

这将在引发异常的确切点停止调试器,并且您可以获得更好的堆栈跟踪。始终启用这样的异常断点是个好主意。

【讨论】:

    【解决方案4】:

    在 lldb 提示符下键入 bt,它会给您一个堆栈跟踪,告诉您应用程序崩溃的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多