【发布时间】:2014-04-10 00:38:15
【问题描述】:
因此,这种情况在许多不同的项目中已经发生过多次。当 Xcode 出现错误时,我将在 Xcode 中调试我的应用程序。看完之后,我会点击 Step Over 或 Continue ......它不会做任何事情。更准确地说,它表现得像踩踏一样,但实际上并没有去任何地方。据我所知,这可以无限期地重复。这是有问题的一个原因是它永远不会给我崩溃日志,因为它永远不会完成崩溃。我只会在应用程序崩溃且未对其进行调试时获得崩溃日志(这意味着我必须通过 Crittercism 或通过检查设备日志来获得它)。
有人以前见过这个,和/或知道为什么会这样吗?我在其他地方没有看到任何提及这一点,但它在几个项目中发生在我身上。
例如,在一个项目中,我们使用了 SocketRocket,并且每隔一段时间(出于未知原因)它会在 SRWebSocket.m 中以以下方法崩溃:
- (void)main;
{
@autoreleasepool {
_runLoop = [NSRunLoop currentRunLoop];
dispatch_group_leave(_waitGroup);
NSTimer *timer = [[NSTimer alloc] initWithFireDate:[NSDate distantFuture] interval:0.0 target:nil selector:nil userInfo:nil repeats:NO];
[_runLoop addTimer:timer forMode:NSDefaultRunLoopMode];
int i = 0;
while ([_runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]) {
NSLog(@"_runLoop %i %@", i++, [NSDate date]);
}
assert(NO);
}
}
它在while 行崩溃。 (顺便说一句,我添加了 NSLog 行)。当我点击 Continue 或 Step Over 时,行指示器会短暂闪烁,然后再次出现在同一行上。请注意,它不会继续到 NSLog 行,并且根本没有任何内容写入控制台。我目前仍在尝试让它再次崩溃(这个特殊的崩溃是相当不可预测的),但如果我没记错的话,行指示器显示EXC_BAD_ACCESS,可能是一个过早释放的对象。
【问题讨论】:
-
您确定没有遗漏什么吗?可能是写到控制台的东西?
-
@ThomasW 不,这就是问题所在 - 没有任何东西写入控制台,它没有完成崩溃,它只是在那里中断并且不会继续前进。
-
它也没有在断点处停止?也许您在异常上设置了断点?
-
@ThomasW 我不相信我会这样做,即使我这样做了,我应该仍然能够超越他们,对吧?
-
你有没有想过在while循环中SRWebSocket崩溃的原因?也会发生崩溃......
标签: ios objective-c xcode debugging xcode5