Xcode的4.x的 - 使它指向违规撞毁线(Xcode 4.x - making it point

2019-07-30 10:16发布

每次Xcode的崩溃,它指向该行的main.m

int retVal = UIApplicationMain(argc, argv, nil, @"AppController");

我知道的Xcode 4调试太臭相比3.x中,但如何使其指向在事故发生线路。

请不要:

  1. 告诉我,使NSZombieEnabled;
  2. 告诉我添加一个异常断点打破对捕捉或投掷的所有异常。
  3. 告诉我的Xcode 4.x的比3.X调试好。

所有这些东西是无用或几乎无用和Xcode的继续崩溃上的main.m同一行...

从这里请救救我。

谢谢。

Answer 1:

这里有一个想法:只有一个的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的另一部分)。



Answer 2:

显然,你已经做了研究,并已只有拿出那些相同的答案。 还有一个理由; 他们是我们拥有的Xcode的4.x的不幸,所以我们不能给你另外一个答案。

所有我可以建议是,如果你已经完成了所有上述补丁,而你使用链接的框架或库,这些可能是你没有得到一个确切行的核心原因上发生崩溃。 链接库已经被编译并不能显示飞机坠毁的确切行,但如果大约发生错误,什么库负责它,你可以明确,你就可以开始在零上的问题的根本原因,找到有问题的线路。



文章来源: Xcode 4.x - making it point to the offending crashing line