Я открыл отчет об ошибке в Apple: https://bugreport.apple.com/cgi-bin/WebObjects/RadarWeb.woa/19/wo/WBbbbyopNFW8FFUuNSbk0w/10.66
Пожалуйста, дайте мне знать, если у вас нет доступа к нему.
Резюме: отладчик XCode не освобождает порт загрузочного сервера
Шаги по воспроизведению: при
отладке приложения iPhone iOS5 в симуляторе в Xcode 4.2 Build 4D5163b на Lion 10.7.2 сбой иногда может привести к невозможности запустить баггер. Вместо этого Xcode выдает эту ошибку:
Не удалось зарегистрировать com.MyApp.MyApp на сервере начальной загрузки. Ошибка: неизвестный код ошибки. Обычно это означает, что другой экземпляр этого процесса уже был запущен или завис в отладчике. Программа получила сигнал: «SIGABRT».
Ожидаемые результаты:
должна быть возможность запустить отладчик после сбоя.
Фактические результаты:
не удается запустить отладчик. Я обнаружил, что единственный способ заставить симулятор снова заработать - это перезапустить Mac OS.
Регресс:
Примечания:
Эта проблема возникает у многих людей:
iPhone - странная ошибка при тестировании на симуляторе
Не удалось зарегистрироваться с помощью сервера начальной
загрузки Ошибка сервера
начальной загрузки в Xcode IPHONE https://discussions.apple.com/message/10416765?messageID=10416765
Выход из XCode и Simulator (и обеспечение того, чтобы ps -Al | egrep «Xcode | Simulator» ничего не возвращал) не помогает решить проблему.
Запуск "launchtl bslist | 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]);