每次Xcode的崩溃,它指向该行的main.m
int retVal = UIApplicationMain(argc, argv, nil, @"AppController");
我知道的Xcode 4调试太臭相比3.x中,但如何使其指向在事故发生线路。
请不要:
- 告诉我,使NSZombieEnabled;
- 告诉我添加一个异常断点打破对捕捉或投掷的所有异常。
- 告诉我的Xcode 4.x的比3.X调试好。
所有这些东西是无用或几乎无用和Xcode的继续崩溃上的main.m同一行...
从这里请救救我。
谢谢。
这里有一个想法:只有一个的try / catch在你的整个应用程序, 从例外 ,而不是当前的堆栈记录的堆(即没有断点+检查 ):
的main.m
int main(int argc, char *argv[])
{
@autoreleasepool {
@try {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
@catch (NSException *exception) {
NSLog(@"%@",[exception callStackSymbols]);
return 1;
}
}
}
我的理解是,我们没有一个很好的方法,否则的原因是碰撞本身不会发生,直到后来在runloop。 我想,之类的东西捕获的异常等,只是把应用程序的状态下, 将在苹果公司的代码时,runloop迭代某处崩溃。 这是类似的,如果你有在UI崩溃......它并不总是当您设置蹩脚的几何形状崩溃,当它试图使用它,它崩溃。 出于这个原因,我们需要从异常对象获取堆栈,而不是目前的状态时死机实际发生。
我将添加这只是因为它几次了我,当我以为我没有信息可用,但我只是不知道Xcode的不够好,但(我敢肯定,这是常识,我只是被愚蠢的)。 有时候我想 ,我只有那个可怕的顶层范围,所有我需要做的是使用小滑块在左下角(在调试会话)看到整个堆栈。 这往往是几乎没用,因为上面提到的原因(这是从问题runloop的另一部分)。
显然,你已经做了研究,并已只有拿出那些相同的答案。 还有一个理由; 他们是我们拥有的Xcode的4.x的不幸,所以我们不能给你另外一个答案。
所有我可以建议是,如果你已经完成了所有上述补丁,而你使用链接的框架或库,这些可能是你没有得到一个确切行的核心原因上发生崩溃。 链接库已经被编译并不能显示飞机坠毁的确切行,但如果大约发生错误,什么库负责它,你可以明确,你就可以开始在零上的问题的根本原因,找到有问题的线路。