Приложение вылетает с имитатором iPhone 4.2 'отключите запуск с оболочки' - PullRequest
12 голосов
/ 24 ноября 2010

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

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

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

Как установить 'отключить запуск с оболочки' на Xcode? Я пытался добавить эту строку в .gdbinit, но без удачи.

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

Спасибо

Ответы [ 7 ]

2 голосов
/ 08 июня 2011

до этой чистой сборки, затем

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

, затем откройте симулятор, затем перейдите в Hardware> version> 4.0.2

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

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

1 голос
/ 14 января 2011

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

1 голос
/ 09 декабря 2010

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

1 голос
/ 25 ноября 2010

Подайте ошибку через http://bugreporter.apple.com/

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

0 голосов
/ 07 ноября 2011

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

man compat

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

-mmacosx-version-min=10.3

Любая версия до 10.4 сделает эту работу.

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

0 голосов
/ 11 марта 2011

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

0 голосов
/ 20 февраля 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

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

Set Strip linked Product Off

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

...