#iphone #objective-c #opengl-es #gdb #xcode4
#iPhone #objective-c #opengl-es #gdb #xcode4
Вопрос:
Это действительно странная ошибка…
Я работаю над проектом iPhone, используя канал камеры и запуская его через шейдер OpenGL, чтобы применить к нему эффекты. Однако каждый раз, когда я просто создаю новый GLfloat в коде, отладчик зависает при запуске… Я не могу скопировать и вставить текст, потому что зависает весь XCode, но я собрал его вместе из одного из файлов журнала:
GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Sat Feb 12 02:56:02 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "--host=x86_64-apple-darwin --target=arm-apple-darwin".2#b2a16f854957b341^2@43"Xcode.IDEFoundation.ConsoleAdaptor.Debugger17"tty /dev/ttys000
(gdb)
Телефон не завис, потому что я могу нажать кнопку «Домой» и продолжать выполнять на нем другие действия. Однако Xcode 4 полностью зависает с помощью beachball, работающего на 99% процессора, и я должен принудительно завершить работу и запустить его снова.
Однако… По-настоящему странно то, что у меня iPhone 3GS, и когда я беру у кого-то iPhone 4, он компилируется и работает нормально. Когда я переключаюсь обратно на iPhone 3GS, все нормально только в первый раз… После этого он снова постоянно зависает.
Возможно, это то, что я делаю, или это еще одна ошибка XCode 4? Я хотел попробовать переключить отладчик на LLDB, но это не отображается в моем выпадающем списке в окне Схемы… Несмотря на то, что в руководстве пользователя Xcode указано, что доступны как GDB, так и LLDB:
Спасибо!
Комментарии:
1. Просто к вашему сведению… LLDB недоступен для проектов iOS, только для OSX.
2. Когда это произойдет, перейдите в командную строку и выберите «sample Xcode». Опубликуйте образец….
3. Этого я не знал… Спасибо 🙂
4. @bbum — Забавная вещь… Я открыл терминал, и с тех пор он работает! Я пока оставлю этот вопрос открытым, чтобы посмотреть, как все пройдет, и если он снова выйдет из строя, я сделаю то, что вы предлагаете, и опубликую образец. Спасибо!
Ответ №1:
Я также работаю над приложением для обработки видео, и это именно те симптомы, которые у меня возникают. он работает волнообразно. Я не знаю, в чем причина этого, но я медленно собираю факты, чтобы решить эту проблему:
- отключение GDB в настройках схемы устраняет проблему
- при включенном GDB «дождаться запуска приложения», похоже, решает проблему (требуется дополнительное тестирование)
- после перехода в режим «стабильной заморозки», то есть beachball при запуске каждый раз, фиксация в репозитории устраняет проблему (??)
- восстановление устройства как нового на последнюю версию iOS через iTunes решает проблему
все вышеперечисленное, за исключением отключения GDB, решает проблему лишь временно — она возвращается еще через несколько запусков…
Комментарии:
1. Спасибо. К сожалению, это могло бы позволить мне успешно выполнить сборку, но отладка в значительной степени является обязательным требованием прямо сейчас, поэтому, если для GDB нет альтернативы iOS, я застрял : (
2. @Joe ты разобрался с этой проблемой? если да, пожалуйста, опубликуйте свое решение
Ответ №2:
Попробуйте открыть терминал И ВЫВЕСТИ ЕГО НА ПЕРЕДНИЙ ПЛАН (ПОВЕРХ XCODE), когда программа будет собрана и начнет выполняться.
Также, если возможно, попробуйте загрузить xcode 4.1. Похоже, это навсегда устранило эту досадную проблему, и я действительно могу снова использовать отладчик!
Комментарии:
1. Я отмечаю это как правильный ответ… Потому что это уже довольно давно не было проблемой, и я могу только предположить, что исправление заключалось в обновлении до XCode 4.1. 🙂
Ответ №3:
Однажды у меня уже была эта проблема, и сегодня она начала повторяться весь день. Я перепробовал все: от очистки проекта до перезагрузки моего iPad и MacBook Pro и даже замены другого кабеля.
Что сработало в тех двух случаях, когда это произошло: я очистил проект, изменил цель сборки и запустил его на симуляторе iPhone, симуляторе iPad. Затем вернулся к исходной (основной) цели сборки (фактическому приложению) и запустил ее на симуляторах iPhone и iPad. Все это работало корректно, так что я, наконец, запустил оригинальное приложение на устройстве iPad, и оно сработало и продолжает работать.
Похоже, что комбинация очистки проекта, изменения целей сборки и запуска в симуляторе удаляет что-то, что ранее приводило к зависанию XCode и моего устройства iPad.
Удачи
Комментарии:
1. Спасибо за совет. Мне было бы интересно узнать, работает ли у вас Opening Terminal?
2. Нет, я пробовал это, но открытие терминала, похоже, не повлияло на XCode и не предотвратило его замораживание
Ответ №4:
В моем случае это был неправильный идентификатор подписи кода
Ответ №5:
Минимизация инструкций «NSLog» в циклах помогает приложениям, использующим OpenGL ES, OpenCV и т.д.