Сбой приложений с 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?
Спасибо
Ответы
Ответ 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 выполнит задание.
Надеюсь, что это поможет.