#iphone #ios #xcode #debugging #build
#iPhone #iOS #xcode #отладка #сборка
Вопрос:
Когда мое приложение выдает исключение, оно выводит следующее в выводе отладчика:
First throw call stack:
(0x310f88bf 0x3829d1e5 0x31e76015 0x31e7640d 0x31e764c5 0x9e903 0x9edfb 0x32b15d55 0x32b20e8d 0x310cb2dd 0x3104e4dd 0x3104e3a5 0x33c7cfed 0x330c0743 0x3267 0x3220)
Программный стек:
Xcode 4.2 в Lion 10.7.2 (Xcode 4.1 не установлен)
Я склоняюсь к тому, что это ошибка Xcode, но видите ли вы что-нибудь очевидное, что я пропустил?
Что я пробовал / проверял
Настройки сборки:
отладочная
полоса Символы отладки во время копирования = НЕТ
продукта, связанного с полосой = НЕТ
уровня оптимизации = Символы -O0 и -Os
скрыты по умолчанию = ДА и НЕТ
Компилятор = LLVM 3.0 и LLVM GCC 4.2
Схема:
Debugger = GDB и LLDB
Очистка:
очистить папку сборки
, удалить каталог производных данных (удалить из органайзера)
Устройства:
симулятор
iOS 5 iOS 5 iPhone 4
iOS 5 iPhone 3Gs
Случайно:
изначально у меня была эта проблема с установленными Xcode 4.1 и 4.2, поэтому удалил оба и переустановил только 4.2
Пробовал с разными проектами с одинаковыми результатами.
При работе с точками останова я вижу это в выводе отладчика перед исключением:
Catchpoint 36 (throw)Catchpoint 37 (catch)Pending breakpoint 2 - "__cxa_begin_catch" resolved
warning: Attempting to create USE_BLOCK_IN_FRAME variable with block that isn't in the frame.
warning: Attempting to create USE_BLOCK_IN_FRAME variable with block that isn't in the frame.
Catchpoint 36 (exception thrown).warning: Attempting to create USE_BLOCK_IN_FRAME variable with block that isn't in the frame.
warning: Attempting to create USE_BLOCK_IN_FRAME variable with block that isn't in the frame.
Ответ №1:
Хорошо, нашел проблему: ну, не я, а Джо (член phillyCocoa)… Но поскольку он не включен, я опубликую его решение.
Цель развертывания была установлена на 4.0, но поскольку символы отладки 4.0 должны загружаться отдельно в Xcode 4.2, DSYM был недействительным.
2 способа исправить:
1. Установите символы отладки для 4.0 из настроек Xcode.
2. Установите для цели развертывания значение 4.3 или выше.
Комментарии:
1. Как вы загружали символы отладки в Xcode 4.x? В настройках-> Загрузки такой опции нет.
Ответ №2:
Единственное, что бросается в глаза, это то, что в сборках разработки, вероятно, оптимизация должна быть полностью отключена -O0
.