Appleでバグレポートを開きました:https ://bugreport.apple.com/cgi-bin/WebObjects/RadarWeb.woa/19/wo/WBbbbyopNFW8FFUuNSbk0w/10.66
アクセスできない場合はお知らせください。
概要: XCodeデバッガーがブートストラップサーバーポートを解放していません
再現手順:
Lion10.7.2のXcode4.2 Build4D5163bのシミュレーターでiPhoneiOS5アプリをデバッグしているときに、クラッシュするとバガーを起動できなくなる場合があります。代わりに、Xcodeは次のエラーを生成します。
com.MyApp.MyAppをブートストラップサーバーに登録できませんでした。エラー:不明なエラーコード。これは通常、このプロセスの別のインスタンスがすでに実行されているか、デバッガーでハングしていることを意味します。プログラムはシグナル「SIGABRT」を受信しました。
期待される結果:
クラッシュ後にデバッガーを開始できるはずです。
実際の結果:
デバッガーを起動できません。シミュレータを再び動作させるために私が発見した唯一の方法は、MacOSを再起動することです。
回帰:
注:
多くの人がこの問題を抱えています:
iPhone-シミュレータでテストするときの奇妙なエラー
XcodeIPHONEのブートストラップサーバーに登録できませんでしたブートストラップサーバーエラー
https://discussions.apple.com/message/10416765?messageID=10416765
XCodeとシミュレーターを終了する(&ps -Al | egrep "Xcode | Simulator"が何も返さないことを確認する)ことは問題を解決しません。
「launchtlbslist|grep MyApp」を実行すると、com.MyAppがまだブートストラップサーバーに登録されていることがわかります。
$ launchctl bslist | grep MyApp
A com.MyApp.MyApp.UIKit.migserver
A com.MyApp.MyApp
ポートを見つけて無効にするコードをいくつか書きましたが、これも失敗します。
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]);