Ich habe mit Apple einen Fehlerbericht geöffnet: https://bugreport.apple.com/cgi-bin/WebObjects/RadarWeb.woa/19/wo/WBbbbyopNFW8FFUuNSbk0w/10.66
Bitte lassen Sie mich wissen, wenn Sie nicht darauf zugreifen können.
Zusammenfassung: Der XCode-Debugger gibt den Bootstrap-Server-Port nicht frei
Schritte zum Reproduzieren:
Beim Debuggen einer iPhone iOS5-App im Simulator in Xcode 4.2 Build 4D5163b auf Lion 10.7.2 kann ein Absturz manchmal dazu führen, dass der Bugger nicht gestartet werden kann. Stattdessen erzeugt Xcode diesen Fehler:
Com.MyApp.MyApp konnte nicht beim Bootstrap-Server registriert werden. Fehler: unbekannter Fehlercode. Dies bedeutet im Allgemeinen, dass eine andere Instanz dieses Prozesses bereits ausgeführt wurde oder im Debugger hängen bleibt. Das Programm empfing das Signal „SIGABRT“.
Erwartete Ergebnisse:
Sollte in der Lage sein, den Debugger nach einem Absturz zu starten.
Tatsächliche Ergebnisse:
Debugger kann nicht gestartet werden. Die einzige Möglichkeit, den Simulator wieder funktionsfähig zu machen, besteht darin, Mac OS neu zu starten.
Regression:
Hinweise:
Viele Leute haben dieses Problem:
iPhone - seltsamer Fehler beim Testen auf dem Simulator
Konnte sich nicht beim Bootstrap-Server registrieren
Bootstrap-Server-Fehler in Xcode IPHONE
https://discussions.apple.com/message/10416765?messageID=10416765
Das Beenden von XCode und des Simulators (und das Sicherstellen, dass ps -Al | egrep "Xcode | Simulator" nichts zurückgibt) hilft dem Problem nicht.
Wenn Sie "launchtl bslist | grep MyApp" ausführen, wird angezeigt, dass com.MyApp noch beim Bootstrap-Server registriert ist:
$ launchctl bslist | grep MyApp
A com.MyApp.MyApp.UIKit.migserver
A com.MyApp.MyApp
Ich habe Code geschrieben, um den Port zu finden und ihn ungültig zu machen, aber auch dies schlägt fehl:
NSMachBootstrapServer *bsserver = [NSMachBootstrapServer sharedInstance];
NSMachPort *port = (NSMachPort *)[bsserver portForName:@"com.MyApp.MyApp"];
[port removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:<#(NSString *)#>
NSLog(@"port = %@",port);
NSLog(@"port.isValid=%d",[port isValid]);
[port invalidate];
NSLog(@"port.isValid=%d",[port isValid]);