J'ai ouvert un rapport de bogue avec Apple: https://bugreport.apple.com/cgi-bin/WebObjects/RadarWeb.woa/19/wo/WBbbbyopNFW8FFUuNSbk0w/10.66
S'il vous plaît laissez-moi savoir si vous ne pouvez pas y accéder.
Résumé: le débogueur XCode ne libère pas le port du serveur d'amorçage
Étapes à
suivre pour reproduire: Lors du débogage d'une application iPhone iOS5 dans le simulateur dans Xcode 4.2 Build 4D5163b sur Lion 10.7.2, un crash peut parfois empêcher le démarrage du bugger. Au lieu de cela, Xcode produit cette erreur:
Impossible d'enregistrer com.MyApp.MyApp auprès du serveur d'amorçage. Erreur: code d'erreur inconnu. Cela signifie généralement qu'une autre instance de ce processus était déjà en cours d'exécution ou est bloquée dans le signal de débogage. Programme reçu: «SIGABRT».
Résultats attendus:
devrait pouvoir démarrer le débogueur après un crash.
Résultats réels:
impossible de démarrer le débogueur. Le seul moyen que j'ai découvert pour faire à nouveau fonctionner le simulateur est de redémarrer Mac OS.
Régression:
Remarques:
Beaucoup de gens ont ce problème:
iPhone - erreur étrange lors du test sur le simulateur
Impossible de s'enregistrer avec le serveur de démarrage
Erreur du serveur de
démarrage du serveur dans Xcode IPHONE https://discussions.apple.com/message/10416765?messageID=10416765
Quitter XCode et le simulateur (et s'assurer que ps -Al | egrep "Xcode | Simulator" ne renvoie rien) n'aide pas le problème.
L'exécution de "launchtl bslist | grep MyApp" révèle que com.MyApp est toujours enregistré auprès du serveur d'amorçage:
$ launchctl bslist | grep MyApp
A com.MyApp.MyApp.UIKit.migserver
A com.MyApp.MyApp
J'ai écrit du code pour trouver le port et l'invalider, mais cela échoue également:
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]);