Das ist also einige Male in verschiedenen Projekten passiert. Ich werde meine App in Xcode debuggen, wenn Xcode bei einem Fehler bricht. Nachdem ich es angesehen hatte, traf ich Step Over oder Continue ... und es würde nichts bewirken. Genauer gesagt, es handelte so, als wäre es getreten, aber es ging nirgendwohin. Dies kann beliebig oft wiederholt werden, soweit ich das beurteilen kann. Ein Grund, warum dies problematisch ist, ist, dass es mir nie das Crash-Protokoll gibt, weil es niemals abstürzt. Ich erhalte nur das Absturzprotokoll, wenn die App abstürzt und nicht geblockt wird (was bedeutet, dass ich es durch Crittercism oder durch Überprüfung der Geräteprotokolle bekommen muss).Xcode wird den Absturz nicht überspringen
Jeder sieht das vorher, und/oder wissen, warum es das tut? Ich habe das nirgendwo anders erwähnt, aber es ist mir in mehreren Projekten passiert.
Zum Beispiel in einem Projekt, das wir SocketRocket verwenden, und jeder einmal in eine Weile (für eine as-of-noch unbekannten Gründen) in SRWebSocket.m in der folgenden Methode abstürzt:
- (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);
}
}
Es stürzt auf der while
Linie ab. (Ich habe übrigens die NSLog-Zeile hinzugefügt). Wenn ich Continue oder Step Over drücke, flackert die Linienanzeige kurz und erscheint dann wieder in derselben Zeile. Beachten Sie, dass die NSLog-Zeile nicht fortgesetzt wird und überhaupt nichts in die Konsole geschrieben wird. Ich versuche gerade noch, es wieder zum Absturz zu bringen (dieser Absturz ist ziemlich unberechenbar), aber wenn ich mich richtig erinnere, sagt der Zeilenanzeiger EXC_BAD_ACCESS
, wahrscheinlich ein vorzeitig freigegebenes Objekt.
Sind Sie sicher, dass Sie etwas nicht verpassen? Vielleicht etwas in die Konsole geschrieben? – ThomasW
@ThomasW Nein, das ist das Problem - nichts wird auf die Konsole geschrieben, es bricht nicht ab, es bricht nur dort und wird nicht weiter gehen. – Erhannis
Es stoppt auch nicht an einem Haltepunkt? Vielleicht haben Sie einen Breakpoint auf Ausnahmen gesetzt? – ThomasW