IPhone - странная ошибка при тестировании на симуляторе

Я тестировал свое приложение на симуляторе, когда он разбился при нажатии кнопки UIAlertView. Я остановил отладку там, внесли некоторые изменения в код и снова создал приложение. Теперь, когда я запускаю приложение, я получаю эту ошибку в консоли

Не удалось зарегистрировать com.myApp.debug с помощью загрузочного сервера. Ошибка: неизвестный код ошибки. Обычно это означает, что еще один экземпляр этого процесса уже запущен или находится в отладчике. Полученный сигнал программы: "SIGABRT".

Я попытался удалить приложение из симулятора, выполнив чистую сборку, но все равно получаю эту ошибку, когда пытаюсь запустить приложение.

Что мне делать, чтобы снова запустить приложение на моем симуляторе?

354
задан lostInTransit 25 апр. '09 в 8:15
источник поделиться
31 ответ
  • 1
  • 2

Попробуйте выйти и перезапустить симулятор? Если "хуже приходит к худшему", вы всегда можете попробовать перезапустить: по моему опыту это должно исправить.

158
ответ дан Elliot Kroo 25 апр. '09 в 8:21
источник поделиться

статус:, это было замечено совсем недавно как Mac OS 10.8 и Xcode 4.4.

tl; dr: Это может произойти в двух контекстах: при запуске на устройстве и при запуске на симуляторе. При работе на устройстве отсоединение и повторное подключение устройства, похоже, исправляет ситуацию.

Майк Эш предложил

launchctl list|grep UIKitApplication|awk '{print $3}'|xargs launchctl remove

Это не работает все время. На самом деле, он никогда не работал у меня, но он явно работает в некоторых случаях. Просто не знаю, какие случаи. Поэтому стоит попробовать.

В противном случае единственный известный способ исправить это - перезапустить пользовательский запуск. Перезагрузка будет делать это, но есть менее решительный/быстрый способ. Вам нужно будет создать другого пользователя-администратора, но вам нужно сделать это только один раз. Когда все вклинится, выйдите из системы как самостоятельно, войдите в систему как этот пользователь и убейте стартовую версию, принадлежащую вашему основному пользователю, например,

sudo kill -9 `ps aux | egrep 'user_id .*[0-9] /sbin/launchd' | awk '{print $2}'`

заменив ваше основное имя пользователя user_id. Вход в систему снова, когда ваш обычный пользователь вернет вас в нормальное состояние. Болезненное, но меньше, чем полная перезагрузка.

детали:

Это началось чаще с Lion/Xcode 4.2. (Лично я никогда не видел его перед этой комбинацией.)

Ошибка, похоже, находится в startd, которая наследует процесс приложения как дочерний, когда отладчик прекращает отладку, не убивая его. Это обычно сигнализируется приложением, становящимся зомби, имеющим статус процесса Z в ps.

Основная проблема, похоже, находится на сервере имен начальной загрузки, который реализован в launchd. Это (насколько я понимаю) отображает идентификаторы приложений для портов mach. Когда ошибка запускается, приложение умирает, но не очищается от карты сервера имени сервера начальной загрузки, и в результате сервер загрузочного сервера отказывается разрешить зарегистрировать один экземпляр приложения под тем же именем.

Было надеяться (см. комментарии), что форсирование launchd до wait() для зомби будет исправлять вещи, но это не так. Это не тот статус зомби, который является основной проблемой (поэтому некоторые зомби являются доброкачественными), но сервер имени начальной загрузки, и там нет известного способа очистить это от убийства launchd.

Похоже, что ошибка вызвана чем-то плохим между Xcode, gdb и пользователем launchd. Я просто повторил клин, запустив приложение в симуляторе iphone, остановив его в gdb, а затем выполнив сборку и запустив симулятор ipad. Он, похоже, чувствителен к переключению симуляторов (iOS 4.3/iOS 5, iPad/iPhone). Это происходит не всегда, но довольно часто, когда я много переключаю симуляторы.

Убийство запуска при входе в систему задержит вашу сессию. Выход и вход в систему не убивают пользователя launchd; OS X поддерживает существующий процесс. Перезагрузка будет исправлять вещи, но это больно. Инструкции выше быстрее.

Я представил ошибку Apple, FWIW. rdar://10330930

242
ответ дан smparkes 22 окт. '11 в 19:14
источник поделиться

Я считаю, что у меня возникла проблема с Lion + Xcode 4.2. Я также столкнулся с проблемой в Xcode 4.3.

Я пробовал все предложения, но никто из них не работал, кроме полной перезагрузки.

Вот как вы определяете, требуется ли вам перезагрузка быстро.

Список всех процессов Zombie:

ps -el | grep 'Z'

Если вы видите, что ваше приложение указано как процесс Zombie, вам необходимо перезагрузить компьютер. В сообщении об ошибке говорится: "Обычно это означает, что другой экземпляр этого процесса уже запущен или находится в отладчике". Ну, Xcode обнаруживает этот процесс Zombie, который вы не можете убить. Единственный способ, который вы можете исправить, - это перезагрузка системы.: (

EDIT, 20120823: У меня есть кое-какие знания о процессах Zombie, поэтому я хотел обновить этот ответ. Процесс Zombie создается, когда родительский процесс не вызывает wait() (ожидание процесса изменения состояния) в завершающем дочернем процессе. Вы не можете запускать "убить" непосредственно в процессе Zombie, но если вы убьете родительский процесс, дочерний процесс zombie будет "очищен" и удален из таблицы процессов.

Я давно не видел эту проблему, поэтому не проверял, что такое родительский процесс в этом сценарии. Альтернативой убийству родительского процесса является перезагрузка системы.:)

70
ответ дан jyap 12 нояб. '11 в 15:19
источник поделиться

Я только что это случилось со мной: я получал ошибку только на своем устройстве, и симулятор работал нормально. Я закончил работу с reset моим устройством, и ошибка исчезла.

20
ответ дан n3wscott 21 июля '10 в 3:46
источник поделиться

У меня эта проблема очень часто в последнее время. Что мешает этому возникнуть? Выход из системы и устраняет проблему, но... это раздражает делать это каждый раз.

EDIT:

Я только что нашел причину. У меня была ошибка в методе ApplicationWillTerminate. Поэтому, когда я нажимаю кнопку остановки в окне Xcode, приложение не может нормально завершить работу и начать зависать.

проверьте Монитор активности, чтобы узнать, включено ли ваше приложение в список. принудительно завершите работу, если возможно.

15
ответ дан sang 07 авг. '09 в 21:30
источник поделиться

Если вы обнаружили, что ваша проблема вызвана процессами зомби:

ps -el | grep 'Z'
(как в предыдущем комментарии qaru.site/questions/18212/...), и просто хотите немедленно исправить проблему, вы можете сделать это, не перезагружая или не убивая что-либо. Просто переименуйте свой исполняемый файл цели проекта:
  • Нажмите на проект на левой панели
  • Выберите Настройки сборки в средней панели
  • В разделе < "изменить" Имя продукта > от $(TARGET_NAME) до $(TARGET_NAME).1

Легко!

14
ответ дан JRG 21 марта '12 в 3:42
источник поделиться

Ну, нет ответов, но, по крайней мере, еще один тест. Откройте терминал и запустите эту команду: "ps-Ael | grep Z". Если вы получаете две записи, один "(clang)", а другой - ваше приложение или название компании, вы будете hosed - reboot.

Если вы разработчик, введите короткую ошибку и скажите Apple, как абсолютно надоедает необходимость перезагрузки, и упомянуть, что они могут заглушить эту ошибку до "rdar://10401934", которую я только что ввел.

Дэвид

7
ответ дан David H 05 нояб. '11 в 17:45
источник поделиться

Сброс iOS Simulator исправил ошибку для меня. Хотя это приведет к удалению всех приложений, которые у вас есть в Simulator, устраняет проблему, не перезагружая компьютер.

Вы можете reset ваш симулятор iOS, выполнив следующие действия:

1) Перейдите в меню "iOS Simulator", рядом с логотипом Apple () в крайнем левом углу вашего основного экрана.
2) Выберите "Reset Контент и настройки...".
3) Прочтите сообщение pop, и если вы согласитесь, нажмите "Reset", в противном случае нажмите "Do not Reset".

5
ответ дан domthinks 13 апр. '11 в 23:31
источник поделиться

Эта ошибка для меня очень много, почти каждый раз, когда я тестирую приложение в Simulator, заставляя меня перезагружаться.

Вот обходной путь, если вы хотите выполнить определенную работу:

  • Выберите проект в навигаторе проекта
  • Перейти Цель Информация
  • Добавить ключ для приложения не работает в фоновом режиме и устанавливается на YES.

Это будет означать, что когда вы нажимаете кнопку "домой" в симуляторе или выходите из симулятора, приложение не зависает.

Не забудьте изменить этот параметр перед распространением! Поместите его в свой контрольный список выпуска:)

4
ответ дан Chris Burt-Brown 10 янв. '12 в 14:16
источник поделиться

Перезагрузили устройство, работали!: D

Спасибо всем за большие предложения.

4
ответ дан Haris Hussain 27 окт. '12 в 22:13
источник поделиться

Если это происходит при тестировании на iPhone. Просто перезагрузите телефон. Из того, что мне сказали, телефон или симулятор по-прежнему считает, что есть экземпляр приложения, поэтому, когда он был последним, он не прекратил правильно делать либо ошибку в вашем коде, либо телефон/симулятор просто хотел иметь стонать.

4
ответ дан Popeye 28 февр. '12 в 11:43
источник поделиться

Я получил эту ошибку при отладке своего приложения на iPhone 4. Жесткая перезагрузка iPhone решила мою проблему. (Отключение iPhone подвешено...)

У меня не было никакого процесса зомби на моем mac и перезагрузка mac не решила проблему.

Возможно, эта ошибка может проявляться как на симуляторе, так и на реальных устройствах.

4
ответ дан craig 12 марта '12 в 5:24
источник поделиться

У меня возникла проблема @jyap упоминается с зомби-процессами. Единственный способ их очистки - перезагрузка. Тем не менее, я заметил, что мои друзья, работающие над одним проектом, получат такую ​​же проблему, но могут убить симулятор, не создавая процесс зомби. Я полностью удалил Xcode и повторно установил его, и пока я все еще получаю ошибку, он не создает процессы зомби, поэтому мне не нужно перезагружаться.

Прежде чем я это сделал, я использовал это очень уродливое обходное решение: измените свой идентификатор приложения и запустите его снова. В конечном итоге вы получаете ненужные копии приложения в симуляторе, но вы можете временно отключить перезагрузку.

4
ответ дан Christopher Pickslay 10 нояб. '11 в 3:39
источник поделиться

У меня просто была эта ошибка. Я попытался перезапустить симулятор и Xcode, но мой проект будет работать только после очистки и сборки. Не знаю, что вызвало это.

3
ответ дан Daniel Wood 17 дек. '10 в 18:57
источник поделиться

У меня была такая же проблема и она была решена, выполнив следующие

  • Удаление приложения с устройства
  • Отключение устройства от Mac,
  • Выключение и повторное включение устройства,
  • Выход и перезапуск Xcode,
  • Выходные инструменты,
  • Наконец, очистите и снова создайте.

Я также сделал еще одну вещь, потому что Xcode настроен на использование iOS 5.0, а мой проект использует iOS 4.3

  • Удалите все фреймворки и добавьте их снова.
3
ответ дан Joey 17 окт. '11 в 15:06
источник поделиться
  • Закрыть симулятор
  • Остановить запуск приложения в xCode.
  • Откройте Монитор активности и найдите процесс с помощью приложения NAME.
  • Убить этот процесс в Activity Monitor
  • Перестройте свой проект, и все должно быть установлено
3
ответ дан negrelja 29 нояб. '11 в 20:57
источник поделиться

Причина

Запуск приложения в симуляторе до того, как ранее запущенное приложение полностью остановилось.

Исправление

Подождите, пока вы не увидите, что кнопка "Стоп" снова активируется перед повторным запуском.

(Я использую Xcode 4.2.1. Эта проблема возникала очень часто, когда я обновлялся до OS X Lion).

3
ответ дан dxb 03 февр. '12 в 23:02
источник поделиться

Альтернативное обходное решение:

  • Дайте вашему приложению новый идентификатор. Если он называется com.foobar.myapp, назовите его com.foobar.myapp01

Вы теряете все данные в приложении, так как это действительно новое приложение, работающее с симулятором iPhone. Это может быть или не быть более раздражающим, чем перезагрузка - просто хотел добавить его в список.

3
ответ дан n13 07 февр. '12 в 18:08
источник поделиться

У меня был рекурсивный сеттер, который взорвался через стек и убил мое приложение таким образом, что мне пришлось загрузить iPod. Это было доказано с исправлением в коде.

3
ответ дан mobibob 20 авг. '11 в 1:43
источник поделиться

Я думаю, что это вызвано принудительным выходом вашего приложения на iPhone до нажатия кнопки остановки в Xcode. Иногда, когда вы нажимаете кнопку остановки в Xcode, требуется дополнительное время для выхода из приложения, если оно зависло. Но будьте терпеливы, это в конечном итоге прекратится в большинстве случаев.

2
ответ дан CommaToast 10 июня '12 в 4:35
источник поделиться

Майк Эш разместил решение (да благословит его Бог!), который не требует перезагрузки. Просто запустите:

launchctl list|grep UIKitApplication|awk '{print $3}'|xargs launchctl remove

В приведенной выше команде перечислены все задания запуска, выполняется поиск UIKitApplication в имени (которое будет заданием, соответствующим ваше приложение, которое неправильно придерживается), извлекает имя и сообщает launchd, чтобы избавиться от этой работы.

2
ответ дан Jano 08 мая '12 в 0:19
источник поделиться

Нет необходимости пересортировать или переустанавливать для моей проблемы, и в моем случае возникла ошибка при попытке запустить приложение на iPhone. Симулятор отлично работал.

Решение: удалите приложение с телефона, сделайте холодный перезапуск телефона, и теперь все хорошо.

2
ответ дан timv 16 янв. '12 в 5:05
источник поделиться

Случилось много для меня с Xcode 4.2.1 на Lion. Обновлено до 4.3.2, и это больше не происходит. Рад, что они исправили его.

2
ответ дан tbag 03 мая '12 в 2:02
источник поделиться

Исправлено перезагрузкой моего телефона после удаления приложения, а затем его восстановление и запуск снова. Сейчас работает отлично.

Weird.

2
ответ дан CommaToast 06 июля '11 в 12:03
источник поделиться

Вы можете назначить переменную в функции или вкладке. Он отключится, если ваша функция или вкладка прекратятся. Поэтому вы должны объявить переменную-член или глобальную переменную.

1
ответ дан bTagTiger 07 сент. '11 в 5:27
источник поделиться

Я получал эту ошибку все время, пока не перестаю доверять кнопке "Стоп" в диалоговом окне "Выполнить". Теперь, когда я всегда ударяю стоп на панели инструментов, прежде чем пытаться запустить, мне еще предстоит столкнуться с любыми процессами зомби.

1
ответ дан Angela 29 янв. '12 в 9:49
источник поделиться

В самом худшем состоянии Reset контента и настройки iOS Simulater, и большую часть времени в моем случае, оставляя XCode вместе с симулятором, всегда работает для меня с XCode4.6 (это часто повесить)

0
ответ дан rptwsthi 22 февр. '13 в 17:55
источник поделиться

Я столкнулся с такой проблемой однажды в моем случае, что я сделал

  • Удалить приложение из симулятора.
  • Удалить папку с производными данными.
  • Выполните чистое действие в проекте, выбрав меню продукта - clean
  • Reset симулятор.
  • Закройте Xcode.
  • Попробуйте запустить проект, если он работает нормально, перейдите к шагу 7
  • Повторите все шаги с 1 по 5, а затем перезагрузите компьютер.

В большинстве случаев, когда я запускал его на крайних этапах 6-го шага, мне пришлось перезапустить мою машину.

0
ответ дан user2538944 21 февр. '14 в 14:53
источник поделиться

Если вы используете тесты из командной строки, (используя xcodebuild test), убедитесь, что работающий симулятор соответствует устройству, на котором вы собираетесь запускать тесты.

Возможно, вы используете тесты командной строки, которые используют iPhone 5. Если вы используете iPhone 6 в объявлении XCode, тогда запустите тесты командной строки, иногда iPhone 6 будет работать, и вам нужно вручную выбрать устройство iPhone 5, а затем снова запустить тесты.

0
ответ дан Rose Perrone 21 февр. '15 в 18:14
источник поделиться

Ой мой - я пробовал ВСЕ, перечисленные выше, и в других сообщениях. Переустановил Xcode, перезагрузил мою машину, скопировал все недостающие файлы в нужные папки... В конце концов я сделал резервную копию своего iphone, вытер его и восстановил, и он сработает!

Я думаю, что, возможно, причиной для чтения в этом и вокруг него было отсоединение моего iphone white, в котором он работал, с инструментами производительности, улавливающими утечки. Или что-то такое.

Аааа, большой вздох облегчения.

0
ответ дан Smikey 09 февр. '11 в 21:22
источник поделиться
  • 1
  • 2

Другие вопросы по меткам или Задайте вопрос