Помилка під час тестування на тренажері iOS: Не вдалося зареєструвати на сервері завантаження


370

Я тестував свою програму на тренажері, коли вона вийшла з ладу, натиснувши кнопку UIAlertView. Я припинив налагодження там, вніс деякі зміни в код і знову створив додаток. Тепер, коли я запускаю програму, я отримую цю помилку в консолі

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

Я спробував видалити додаток із симулятора, роблячи чисту збірку, але я все одно отримую цю помилку, коли намагаюся запустити додаток.

Що мені робити, щоб знову запустити додаток на своєму тренажері?


2
Будь-які пропозиції щодо того, що робити, коли це відбувається під час тестування на пристрої? Я спробував перезапустити пристрій, Xcode.
iPadDeveloper2011

1
Я також спробував видалити додаток на пристрої, вийшов з усіх активних додатків (двічі клацніть додому, утримуйте палець на піктограмі додатка, торкніться знака «-»), перезапустив Xcode, вийшов із системи та знову. Поки що нічого не працює.
iPadDeveloper2011

Спробуйте "Порожній кеш" у меню XCode. Це також допомагає.
LostInTransit

3
Для всіх, хто стикається з цією проблемою, пізніше з'ясував, це трапляється більшість випадків через помилку в коді. Знайдіть якийсь фрагмент коду, який вимагає чимало часу на виконання або забирає додаток у цикл.
lostInTransit

4
Коли це станеться, я просто вбиваю SimulatorBridge і кидаю тренажер. ps ax | grep SimulatorBridge
Елланд

Відповіді:


162

Спробуйте покинути та перезапустити тренажер? Якщо "гірше стає гіршим", ви завжди можете спробувати перезапустити: на мій досвід, це має виправити.


44
Закінчився перезапуск системи! Досі не знаю, що викликало проблему!
lostInTransit

6
Як йдеться в коментарі нижче, зазвичай ви можете побачити вивішений процес у "Моніторі діяльності" і там його вбити.
mxcl

13
Я ненавиджу перезапуск :) Вихід з вивішеного процесу працював на мене: ps ax | grep Simulator покаже ваші запущені програми, в моєму випадку це було вивішене MyApp.app.
BadPirate

12
Перезапуск не допоміг
Паскаль Клейн

10
Я часто отримую це в XCode 4.3. Перезапуск програми або вихід із тренажера не допоможе. Мені доведеться перезавантажити комп’ютер, щоб змусити його працювати.
Øystein

242

статус: це спостерігалося зовсім недавно як 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. (Особисто я ніколи не бачив цього поєднання.)

Здається, помилка запущена, яка успадковує процес додатків як дитина, коли налагоджувач перестає налагоджувати його, не вбиваючи його. Про це зазвичай сигналізує додаток, що перетворюється на зомбі, маючи статус процесу Z у ps.

Основна проблема, як видається, знаходиться на сервері імен завантажувальної машини, який реалізований при запуску. Це (наскільки я це розумію) відображає ідентифікатори додатків для обробки портів. Коли помилка спрацьовує, додаток гине, але не видаляється з карти сервера імен сервера завантажувального сервера, і, як результат, сервер завантаження відмовляється дозволити реєструвати інший екземпляр програми під тим самим іменем.

Сподівалося (див. Коментарі), що примусовий запуск на wait()зомбі виправить речі, але це не так. Основним завданням є не статус зомбі (саме тому деякі зомбі є доброякісними), але сервер імен завантажувального імені, і немає відомого способу очистити цю невдачу вбивства.

Схоже, помилку викликає щось погане між Xcode, gdb та запуском користувача. Я щойно повторив клин, запустивши додаток у імітаторі iphone, зупинивши його в gdb, а потім зробивши збірку та запустіть до симулятора ipad. Здається, він чутливий до переключення тренажерів (iOS 4.3 / iOS 5, iPad / iPhone). Це не відбувається постійно, але досить часто, коли я сильно перемикаю тренажери.

Убивання запуску під час входу в систему призведе до скасування вашого сеансу. Вихід із системи та вхід у систему не вбиває запускається користувача; OS X зберігає існуючий процес навколо. Перезавантаження виправить речі, але це боляче. Наведені вище інструкції швидше.

Я подав помилку в Apple, FWIW. rdar: // 10330930


2
Дякуємо за ретельне пояснення нової поведінки Lion / XCode4.2. Здається, це відбувається частіше при налагодженні двох окремих додатків.
samkass

2
Це не лише Лев. Тут все ще використовується Snow Leopard і переглядайте цю помилку багато разів з часу виходу XCode 4.2. (Використовували для використання XCode 3.x до виходу iOS SDK 5.0.)
Jonny

3
Дякую за інформацію ... Це останнім часом у мене шалено трапляється ... Двічі за останні 10 хвилин. Нібито важко отримати міцний робочий процес, коли мені доведеться постійно перезавантажуватися. Ну, перезавантажте комп'ютер ще раз.
Бред Госс

1
@smparkes: Це, здається, трапляється частіше, ніж раніше. Я просто змінюю bundleID і все працює знову, але це дратує при роботі з логікою CoreData, яку ви намагаєтеся налагодити. Мені менше дратувати, ніж перезавантажувати, я визнаю.
Майк А

2
4.3.1, і це сталося просто зараз ... отак прикро. Для мене перезапуск самого iPhone зазвичай це вирішує, мені не потрібно перезавантажувати свій Mac. Його цілеспрямоване ставлення з XCode 4.2 під Snow Leopard, колись близько вересня 2011 року.
TheEye

70

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

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

Ось як ви визначаєте, чи потрібно швидко перезавантажити.

Перерахуйте всі ваші процеси зомбі:

ps -el | grep 'Z'

Якщо ви бачите, що ваш додаток перелічено як процес Zombie, вам потрібно буде перезавантажити машину. У повідомленні про помилку зазначено "Це, як правило, означає, що інший екземпляр цього процесу вже запущений або вивішений у відладчику". Ну, Xcode виявляє цей процес зомбі, який ви не можете вбити. Єдиний спосіб виправити це - це перезавантаження системи. :(

EDIT, 20120823: Я маю кращі знання з процесів зомбі, тому хотів оновити цю відповідь. Процес зомбі створюється, коли батьківський процес не викликає wait () (чекати, коли процес змінить стан) під час закінчення дочірнього процесу. Ви не можете запустити "убивати" безпосередньо в процесі зомбі, але якщо ви вб'єте батьківський процес, дочірній процес зомбі буде "пожинований" та видалений з таблиці процесів.

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


Дякую, у мене було 7 примірників із 3-х програм, над якими я працював як зомбі.
ArtSabintsev

1
Як було сказано вище, перезавантаження є достатнім, але не необхідним. Крім того, іноді існують зомбі, які не викликають проблеми, тому пошук таких зомбі насправді не є надійним заходом. Єдиний вірний знак - повідомлення в Xcode.
smparkes

Ви намагалися вбити ці процеси зомбі як корінь? Я перезавантажився, перш ніж подумав це зробити.
Райан Х.

1
@smparkes, так, це очевидно, виходячи з цього питання, в якому обговорюється це повідомлення про помилку.
jyap

1
@HZC, так, ви не можете вбивати процеси зомбі навіть як root.
jyap

20

У мене просто так трапилося: я отримував помилку лише на своєму пристрої, і тренажер працював чудово. Мені довелося скинути пристрій, і помилка усунулася.


1
тут же перезавантажили пристрій, і він пішов. Симулятор працював чудово
agente_secreto

15

У мене останнім часом дуже часто виникає ця проблема. Що б завадити цьому не статися? Вихід із системи та усунення проблеми, але .. це прикро робити так часто.

Редагувати:

Я щойно знайшов причину. У мене була помилка в методі ApplicationWillTerminate. Отже, коли я натискаю кнопку зупинки у вікні Xcode, програма не могла належним чином завершитися і почала зависати.

перевірте Монітор активності, щоб побачити, чи є ваш додаток у списку. примусово киньте, якщо можливо.


2
Це зафіксувало це для мене! ps aux | grep Simulator
Джейсон Прадо,

Якщо це допомагає, я створюю цю помилку під час запуску інструментів Leak Performance
IssamTP

14

Якщо ви виявите, що проблема пов’язана з процесами зомбі:

пс -ель | grep 'Z'
(Як і в попередньому коментарі https://stackoverflow.com/a/8104400/464289 ) і просто хочете , щоб негайно вирішити цю проблему, ви можете зробити це без перезавантаження або вбити що - небудь. Просто перейменуйте виконаний ціль проекту:

  1. Клацніть проект на лівій панелі
  2. Виберіть Налаштування побудови на середній панелі
  3. У розділі " Упаковка " змініть " Назва продукту " з $ (TARGET_NAME) на $ (TARGET_NAME) .1

Легко!


це не спрацювало для мене, я отримав ту саму помилку, яку я отримую: профіль надання "mataleao2" вказує ідентифікатор програми "au.com.mataleao", який не відповідає поточному налаштуванню "au.com.mataleao-1"
sapatos

Ви тестуєте на тренажері чи на iPhone?
JRG

я тестую лише на iphone, функціональність я тестую, працюватиму лише по телефону
sapatos

7

Ну, жодних відповідей, але хоча б ще один тест. Відкрийте термінал і запустіть цю команду: "ps-Ael | grep Z". Якщо ви отримаєте дві записи, одну "(clang)", а іншу назву програми або компанії, вам потрібно ввести перезавантаження.

Якщо ви розробник, введіть коротку помилку і скажіть Apple, як це абсолютно дратує те, що потрібно перезавантажувати, і згадайте, що вони можуть копіювати цю помилку на "rdar: // 10401934", яку я щойно ввів.

Девід


5

Скидання симулятора iOS виправило помилку. Хоча це видалить усі програми, які у вас є в Simulator, це виправить проблему, не потребуючи перезавантаження машини.

Ви можете скинути свій iOS Simulator, виконавши наступні дії:

1) Перейдіть у меню «iOS Simulator», поруч із логотипом Apple () в лівій крайній частині головного екрану.
2) Виберіть "Скидання вмісту та налаштувань ...".
3) Прочитайте попсове повідомлення, і якщо ви згодні, натисніть "Скинути" в іншому випадку, натисніть "Не скидати".


3
Не допомагає ні один біт, натомість ви втрачаєте весь вміст / програми / фотографії / контакти
дивно

1
@strange це симулятор. у будь-якому випадку вона не містить важливої ​​інформації. :)
Євген Бодунов

5
  1. Закрийте тренажер
  2. Зупиніть роботу програми в xCode.
  3. Відкрийте Монітор активності та знайдіть процес, запущений у вашому додатку NAME .
  4. Убийте цей процес у "Моніторі діяльності"
  5. Побудуйте свій проект, і вам слід все налаштувати

Схоже, цей процес не захищений від того, що його вбивають у "Моніторі діяльності", навіть із "Силою кинути"
Ферруччо

4

У мене була проблема @jyap згадує процес зомбі. Єдиним способом їх очищення було перезавантаження. Однак я помітив, що мої друзі, що працюють над тим самим проектом, отримають ту саму проблему, але можуть вбити тренажер, не створюючи процес зомбі. Я повністю видалив Xcode і повторно встановив його, і хоча я все-таки отримую помилку, він не створює процесів зомбі, тому мені не доведеться перезавантажувати.

Перш ніж я це зробив, я користувався цим потворним рішенням: змінити ідентифікатор програми та запустити знову. Ви потрапляєте в непотрібні копії програми в тренажері, але ви можете перенести перезавантаження на деякий час.


4

Ця помилка трапляється мені багато, майже кожен раз, коли я тестую додаток у Симуляторі, змушуючи мене перезапустити.

Ось вирішення, якщо ви хочете виконати якусь роботу:

  • Клацніть свій проект у навігаторі проектів
  • Перейти до цілі -> Інформація
  • Додавання ключа для програми не працює у фоновому режимі та встановлено на YES.

Це означає, що при натисканні кнопки додому в тренажері або виходу з тренажера додаток не зависає.

Не забудьте змінити цю настройку перед розповсюдженням! Помістіть його у свій контрольний список :)


1
Це небезпечно, оскільки заважає вам протестувати фонову поведінку, поки ви не пам’ятаєте її змінити.
тс.

@tc: Так, я згоден. Однак, якщо ви змушені перезавантажувати кожен раз, коли ви запускаєте додаток для iOS (саме це було у мене), це все ж може бути краще, ніж альтернатива.
Кріс Берт-Браун

4

Якщо це відбувається під час тестування на iPhone. Просто перезавантажте телефон. З того, що мені сказали, телефон або тренажер все ще вважає, що існує приклад запущеного додатка, тому, коли він був останній запуск, він не закінчився правильно, зробіть або помилку у вашому коді, або телефон / симулятор просто захотів мати стогін.


4

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

У мене не було жодного процесу зомбі на моєму mac, і перезавантаження Mac не вирішило проблему.

Можливо, ця помилка може проявитися як на тренажері, так і на фактичних пристроях ???



3

У мене просто була ця помилка. Я спробував перезапустити тренажер та Xcode, але мій проект запрацює знову лише після очищення та складання. Поняття не маю, що це спричинило.


3

У мене був рекурсивний сетер, який вибухнув через стек і вбив мою програму таким чином, що мені довелося завантажувати свій iPad. Це було виправдано з виправленням у коді.


3

У мене була така ж проблема, і я її вирішив, зробивши наступне

  • Видаливши додаток із пристрою,
  • Відключення пристрою від Mac,
  • Вимкнення та ввімкнення пристрою,
  • Вихід та повторний запуск Xcode,
  • Вихід з інструментів,
  • Нарешті, очистіть і побудуйте заново.

Я також зробив ще одне, тому що Xcode налаштований на використання iOS 5.0, а мій проект використовує iOS 4.3

  • Видаліть усі рамки та додайте їх знову.

Питання для Simulator. не для пристрою.
вірусний

3

Інший спосіб вирішення:

  • Додайте додатку новий ідентифікатор. Якщо він називається com.foobar.myapp, назвіть його com.foobar.myapp01

Ви втрачаєте всі дані в додатку, оскільки це фактично новий додаток, що працює на iPhone-симуляторі. Це може бути, а може, і не дратувати більше, ніж перезавантаження - просто хотілося додати його до списку.


3

Причина

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

Виправлення

Зачекайте, поки ви побачите, що кнопка "Стоп" знову активується, перш ніж знову запустити.

(Я використовую Xcode 4.2.1. Ця проблема траплялася дуже часто, коли я перейшов на OS X Lion).


Просто знову виникала ця помилка. Я спробував усе, і нарешті iPad перезапустив це.
5бар

2

Виправлено перезавантаженням телефону після видалення програми, а потім відновлення його чистим та запущеним знову. Зараз добре працює.

Дивно.


2

Для моєї проблеми не потрібно було перестроювати чи перевстановлювати, і в моєму випадку помилка з’явилася при спробі запуску програми на iPhone. Симулятор працював чудово.

Рішення: Видаліть програму з телефону, проведіть холодний перезапуск телефону і тепер все добре.


2

Багато чого сталося для мене з Xcode 4.2.1 на Леві. Оновлено до 4.3.2 і більше не відбувається. Радий, що це виправили.


2

Майк Еш опублікував рішення (благослови його!), Яке не потребує перезавантаження. Просто запустіть:

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

Вищевказана команда перераховує всі запущені завдання, шукає їх з UIKitApplication у назві (що буде завданням, відповідним вашому додатку, яке неправильно стикається), витягує ім'я та повідомляє запускати, щоб позбутися цієї роботи.


У мене було багато шансів перевірити це (зітхаючи). Іноді це працює, іноді мені доводиться перезавантажувати iPhone або навіть свій Mac (команда вище говорить "процес не знайдено").
Яно

2

Я думаю, що це викликано примусовим закриттям програми на iPhone перед натисканням кнопки зупинки в Xcode. Іноді, коли ви натискаєте кнопку зупинки в Xcode, тоді потрібен додатковий час, щоб закрити програму, якщо вона висіла. Але будьте терплячі, вона з часом припинить більшу частину часу.


1

Ви можете виділити змінну у функції чи вкладці. Він вирішиться, якщо ваша функція або вкладка припиняються. Тому ви повинні оголосити його змінною члена або глобальною змінною.


1

Я постійно отримував цю помилку, поки не переставав довіряти кнопці "Стоп" у діалоговому вікні "Запустити". Тепер, коли я завжди натискаю стоп на панелі інструментів, перш ніж намагатися запустити, мені ще не доводиться стикатися з жодними зомбі-процесами.


0

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

Я думаю, що, можливо, було причиною того, щоб прочитати всередині і навколо цього, було відключення мого iphone білого кольору, що він працював із інструментами для продуктивності, що ловлять витоки. Або якась така річ.

Аааа, великий зітхання полегшення.


0

У найгіршому стані Скидання вмісту та налаштування iOS Simulater, а більшість випадків у моєму випадку, виходячи з XCode разом із тренажером, завжди працює для мене з XCode4.6 (які часто вішають)


0

Я зіткнувся з таким питанням один раз у своєму випадку, ось що я зробив

  1. Видаліть додаток із симулятора.
  2. Видаліть отриману папку даних.
  3. Виконайте чисту дію в проекті, вибравши меню продукту - очистити
  4. Скиньте тренажер.
  5. Закрити Xcode.
  6. Спробуйте запустити проект зараз, якщо його нормально працює, перейдіть до етапу 7
  7. Повторіть усі кроки від 1 до 5, а потім перезавантажте машину.

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


0

Ця помилка мала місце в старих версіях iOS Simulator, оскільки старі екземпляри роботи на іншому пристрої, який вимикався, могли зіткнутися з новим екземпляром.

iOS 6.0 і пізніших версій не повинні мати таких проблем, оскільки iOS 6.0 представив використання підмножини завантажувальної програми, а iOS 7.0 запровадив використання виділеного сервера завантаження (startd_sim), який повністю ізольований від завантажувального сервера хоста.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.