Модульный тест iphone google-toolbox-for-mac: 1073 Прервать прерывание mkdir "$CFFIXED_USER_HOME" Сбой команды /bin/sh с кодом выхода 134
Я пытаюсь настроить фреймворк для модульного тестирования iPhone с google-toolbox-for-mac. Я создал простой модульный тест, постараюсь его собрать и получаю следующую ошибку. Мой коллега может использовать тот же проект и успешно строить на своей машине. Что касается жизни, я не могу понять, чего мне не хватает. Ниже приведено сообщение об ошибке, которое я вижу. У кого-нибудь есть идеи?
Не найдено подходящих процессов, принадлежащих вам
mkdir(1073) malloc: защита краев
mkdir(1073) malloc: запись стеков malloc на диск с помощью стандартного устройства записи
mkdir(1073) malloc: включение scribbling для обнаружения модов на свободные блоки
mkdir(1073) malloc: процесс 1059 больше не существует, журналы стека удалены из /tmp/stack-logs.1059.mkdir.QDKY28.index
mkdir(1073) malloc: журналы стека записываются в /tmp/stack-logs.1073.mkdir.KrpE2L.index
Обнаружена попытка вызвать символ в системных библиотеках, которого нет на iPhone: getopt$UNIX2003 вызван из функции??? в образе мкдир.
Если вы столкнулись с этой проблемой при запуске двоичного файла симулятора в GDB, убедитесь, что сначала вы отключили start-with-shell.
/Developer/google-toolbox-for-mac/UnitTesting/RunIPhoneUnitTest.sh: строка 150: 1073 Прервать прерывание mkdir "$CFFIXED_USER_HOME"
Сбой команды /bin/sh с кодом выхода 134
2 ответа
Кажется, это ошибка в скрипте google-toolbox/UnitTesting/RunIPhoneUnitTest.sh. Все после строки: export DYLD_ROOT_PATH="$SDKROOT"
работает в "режиме iPhone". На нашем старом 32-битном iMac /bin/mkdir, похоже, используется системный вызов getopt$UNIX2003, который недоступен на iPhone. Таким образом, следующая строка не выполняется: mkdir "$CFFIXED_USER_HOME"
, На более новых 64-битных Macs /bin/mkdir совместим с режимом iPhone.
Исправление состоит в том, чтобы просто переместить часть кода, начиная с if [ $GTM_DISABLE_USERDIR_SETUP -eq 0 ]; then
до того, как export DYLD_ROOT_PATH
часть (а также export CFFIXED_USER_HOME
линия).
Кстати, в SDK есть версии-оболочки системных библиотек libc, libSystem и т. Д., Которые проверяют, доступны ли используемые системные вызовы на iPhone. Вот что означает "режим iPhone" выше.
Похоже, ваш коллега использует более старую версию iOS SDK, которая поддерживает символьные декорации $UNIX2003. У меня была похожая проблема, когда я пытался использовать версию libCURL, скомпилированную для более ранней ОС. В конце концов, мне пришлось пересобрать libCURL с последними инструментами SDK (подробности здесь: http://www.creativealgorithms.com/blog/content/building-libcurl-ios-42), но вы можете обойти его используя тот же SDK, что и ваш коллега (если он еще доступен).