在xcode中抛出EXC_BAD_ACCESS错误

时间:2011-08-28 17:41:31

标签: ios xcode exc-bad-access

我的应用程序在运行时在各个点崩溃,并导致以下错误,代码中的同一点。我的研究表明这是一个记忆问题,但我不确定为什么。我不是一个应用程序开发人员(而是一个Web开发人员),他对Objective-C有一个很好的理解。我也没有构建这个应用程序(长篇故事)。

#import <UIKit/UIKit.h>

int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);        //Crashes with EXC_BAD_ACCESS
    [pool release];
    return retVal;
}

我知道在不知道应用程序的其余部分的情况下可能很难,但是有人能指出我可能导致这种情况的正确方向,或者我如何开始调试它?

注意:在我修复了一些内存泄漏问题之前,应用程序没有抛出此错误。不确定这是否有帮助。

2 个答案:

答案 0 :(得分:3)

正确的方向是使用Instruments(在/ Developer / Applications文件夹中附带Xcode)。如果是EXC_BAD_ACCESS,最好的选择是Zombies乐器。

答案 1 :(得分:0)

根据您使用的是Xcode 4还是早期版本,How to enable NSZombie in Xcode?上的SO回答可能会有所帮助;在您的问题中,错误报告在最顶层,因此您认为告诉错误源并不是特别有用。

我可以为您提供的两分钱反馈是我第一次尝试使用静态分析器时遇到的类似情况;在其报告之后,我试图修复潜在的泄漏,实际上导致资源被提前释放。该工具很有用,但它需要比开始时看起来更多的时间来掌握。它看起来像一个按钮,但它并不完全正确,因为尝试修复解决方案也可能看起来不合适(你只是超出了它的分析能力,制造一个更“微妙”的错误;))