在viewDidLoad或viewDidDisappear上的XCode 4.2调试将以EXC_BAD_ACCESS结束

时间:2011-10-14 11:34:52

标签: iphone ios xcode debugging viewdidload

viewDidLoadviewDidDisappear上的XCode 4.2调试将以EXC_BAD_ACCESS

结束

它断开该断点但在继续时(“继续执行程序”)它在线程1(0开始)上返回:EXC_BAD_ACCESS(code = 1,address = 0x ....)。这在早期版本中没有发生。

有人得到同样的错误?有人知道如何处理它?

谢谢!

示例代码很简单:

 - (void) viewDidDisappear:(BOOL)animated {  
       [super viewDidDisappear:animated];
        NSLog(@"View did dissapear");    
    }

当在断点上调试(与NSLog一致)时,然后点击继续它将在EXC_BAD_ACCESS上结束。如果没有断点那么一切正常。

我正在使用XCode 4.2 Build 4D199(OS X Lion 10.7.2)。使用LLDB调试器。

更新:在所有异常中放置一个中断,它总是在线程8上结束:EXC_BAD_ACCESS - 0x1f43:movl(%ebx),%eax - 第0行:开始....

更新2:玩XCode,我真的不知道为什么但知道它有效。没有代码改变......嗯...奇怪......

5 个答案:

答案 0 :(得分:1)

  

如果覆盖此方法,则必须在实施中的某个时刻调用super。

这是来自文档,我不知道是否是导致你的坏心的问题,但至少你需要修复它。

答案 1 :(得分:1)

您对提供的代码没有多大帮助。

设置malloc_error_break并启用僵尸并查看是否会导致某些内容

答案 2 :(得分:1)

您必须始终在覆盖的所有superviewWill...方法中的某个位置拨打viewDid...。例如,

- (void) viewDidDisappear:(BOOL)animated {
        NSLog(@"View did disapear");
        [super viewDidDisappear:animated];
}

答案 3 :(得分:1)

我在viewDidDisappear上收到同样的错误:动画 - 结果我发了一个拼写错误[ self viewDidDisappear:animated];而不是[超级 viewDidDisappear:animated];

简单修复,但一开始并不是很明显。我很惊讶它没有给我一个警告。

答案 4 :(得分:0)

我在这里看到的问题略有不同。在我的情况下(SnowLeopard 10.6.8,XCode 4.2,LLVM 3.0)它停在制动点,但XCode不显示任何调试信息。我可以在GDB中看到我的stackrace很好,但是本地值搞砸了。有趣的是,我尝试使用performSelectorOnMainThread:它可以恢复XCode调试功能,但有些东西会破坏活动帧值。

- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
        [self performSelectorOnMainThread:@selector(_destroyMarketBrowser) withObject:nil waitUntilDone:YES];

}

顺便说一下:在模拟器中一切正常,问题只发生在真实设备上(5.0.1或5.1 Beta2)