使用iOS模拟器和XCode 4调试应用程序崩溃,卡在main()函数中,而不是崩溃源

5

可能重复:
Xcode 4.2显示错误的代码行

Xcode 4的调试器似乎无法在iOS模拟器中停止执行附近任何原因导致崩溃的地方。假设我在我的代码中引入了一个错误,比如数组越界错误,例如:

NSMutableArray * test = [[NSMutableArray alloc] initWithCapacity:5];
[test insertObject:@"Hello" atIndex:10];

当应用程序不可避免地崩溃时,我被带到main.m中的main函数,"By Thread"视图上没有调用堆栈可以帮助我找出问题所在。
也许我在构建属性中缺少调试设置?这是适用于Snow Leopard的Xcode 4.2。
谢谢。

Josh,确实是一个重复的问题。谢谢。我已经投票关闭了自己的问题。 - Tim
2个回答

10

前往断点面板,在左下角添加,点击+号并添加“异常断点”。

异常:全部
中断:抛出时中断。

这样大多数情况下就可以解决问题了。


没起作用。如何让这个苹果IDE在所有情况下像其他IDE一样工作?我的意思是,调试所有代码而不仅仅是一些代码非常重要。 :/ - Henrik Erlandsson
@HenrikErlandsson:再试一次,这个方法有效。我经常使用它。 - Oliver
它在[localvariable autorelease] EXC_BAD_ACCESS错误的正确行处没有停止。'再试一次'?实际上,添加这样的断点非常容易,我认为没有人会失败。然而,断点可能无法停在正确的行上,对于这种类型的错误来说肯定是这种情况。 - Henrik Erlandsson
1
@HenrikErlandsson:当然。Autorelease在被调用时并不会立即释放数据,而是标记数据将在稍后的时间释放。因此,崩溃并不是由于autorelease引起的,而是由于系统在事件循环结束时对数据进行了释放。如果在单个事件循环中的不同方法上对同一数据使用3个autorelease,则无法确定哪一个是崩溃的原因。因此,您不能要求调试器比您更好地了解它。如果调用release,则情况就不同了,因为它会立即生效。 - Oliver

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接