Подтвердить что ты не робот

Сбой приложений с 4.2 iPhone simulator 'set start-with-shell off'

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

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

Обнаружена попытка вызова символа в системных библиотеках, отсутствующего на iPhone: fcntl $UNIX2003, вызванный из функции get_socket_nonblocking в image 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?

Спасибо

4b9b3361

Ответ 1

перед этим cleanAll build, затем

В xcode перейдите в Project > set active executable > appname - симулятор Iphone 4.0

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

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

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

Ответ 2

Загрузите ошибку через http://bugreporter.apple.com/

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

Ответ 3

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

Ответ 4

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

Ответ 5

Я столкнулся с аналогичной ошибкой:

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

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

Set Strip linked Product Off

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

Ответ 6

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

Ответ 7

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

man compat

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

-mmacosx-version-min=10.3

Любая версия до 10.4 выполнит задание.

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