Приложение вылетает из-за симулятора iPhone 4.2 `` отключить запуск без оболочки ''

Я пишу приложение, которое отлично работает на симуляторе iPhone 4.0 / 4.1, но не на 4.2.

Получаю такое предупреждение:

Обнаружена попытка вызова символа в системных библиотеках, которого нет на iPhone: fcntl $ UNIX2003, вызванный из функции get_socket_nonblocking в изображении TestApp. Если вы столкнулись с этой проблемой при запуске двоичного кода симулятора в gdb, сначала убедитесь, что вы 'set start-with-shell off'.

Как установить 'set start-with-shell off' в Xcode? Я пытался добавить эту строку в .gdbinit, но безуспешно.

С 4.0 / 4.1 SDK iPhone Simulator печатает предупреждения о попытке вызвать символ, которого нет на iPhone в окне отладки, но приложение не вылетает. При использовании 4.2 приложение вылетает. Как предотвратить вылеты 4.2?

Спасибо


person kesrut    schedule 24.11.2010    source источник
comment
Вы пробовали собирать и запускать на реальном устройстве?   -  person Tammen Bruccoleri    schedule 25.11.2010
comment
У меня такое же сообщение об ошибке. Вы отправили отчет об ошибке? Если да, то какой ссылочный номер?   -  person Linda    schedule 02.12.2010


Ответы (7)


перед этим чистить все строить потом

В xcode перейдите в Project> установите активный исполняемый файл> имя приложения - симулятор Iphone 4.0

затем откройте симулятор, затем перейдите в Оборудование> Версия> 4.0.2

затем дважды щелкните urapptarget и на вкладке сборки измените «ios deployment target = 4.0»

теперь запустите в симуляторе, он будет работать

person Vijay-Apple-Dev.blogspot.com    schedule 08.06.2011

Сообщите об ошибке через http://bugreporter.apple.com/.

Отладчик в Xcode будет читать ~ / .gdbinit точно так же, как gdb в командной строке. Попробуйте добавить эту строку в ~ / .gdbinit.

person bbum    schedule 24.11.2010

У меня была аналогичная проблема с версией libCURL, созданной для более ранней ОС. Решением было перестроить библиотеку под iOS 4.2, чтобы исключить украшение символов $ UNIX2003. (Полную информацию я написал на http://www.creativealgorithms.com/blog/content/building-libcurl-ios-42.)

person Cory Pratt    schedule 09.12.2010

Мне также не удалось добавить строку в ~ / .gdbinit. Рискуя заявить очевидное: если вы установите версию симулятора 4.1 в XCode, вы избежите проблемы. Это то, что я делаю сейчас - и это нормально, если мне не нужно тестировать API, доступный только на 4.2, чего у нас нет (мы по-прежнему нацелены на iOS 3.0).

person patrickq    schedule 13.01.2011

Я столкнулся с похожей ошибкой:

Detected an attempt to call a symbol in system libraries that is not present on the iPhone: pthread_rwlock_init$UNIX2003 called from function ...

Мне удалось исправить это, сняв флажок «Убрать связанный продукт» в настройке сборки развертывания проекта, т.е. STRIP_INSTALLED_PRODUCT = NO

Не забудьте произвести полную очистку перед восстановлением.

Отключить связанный продукт

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

person Corin    schedule 20.02.2011
comment
Хорошо. Кто-то еще сообщил об этом ... работает, если проверить? - person Corin; 28.02.2011

Если вы используете собственные библиотеки, вам следует перекомпилировать их с помощью iOS4 (только версии i386, поскольку она работает на устройстве).

person rockeye    schedule 11.03.2011

Суффикс $ 2003 генерируется компилятором при некоторых обстоятельствах, которые вы можете найти полностью задокументированными в ручном вводе для compat

man compat

Я боролся с этим некоторое время, прежде чем наконец исправить это, установив

-mmacosx-version-min=10.3

Любая версия до 10.4 подойдет.

Надеюсь это поможет.

person Dave Durbin    schedule 07.11.2011