"Имя проекта" было скомпилировано с оптимизацией-шаг может вести себя странно; переменные могут быть недоступны
попытка войти в код AFNetworking генерирует следующее предупреждение:
[Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available.
и, конечно, я не могу отладить код. Чтобы быть конкретным, я пытаюсь отладить UIImageView+AFNetworking
категория, которая кажется невозможной. Изменение кода не имеет никакого эффекта (пробовал NSLog
и т. д.) и при попытке войти в компиляторы переходит к ассемблерному коду и показывает UIImageView+TVASTAFNetworking
как имя категории, которое не существует нигде в базе кода.
С Помощью Xcode 7. усвн 9 и 8. Cocoapods (без рамки)
обновление
Я забыл упомянуть, что оптимизатор установлен в none
как для выпуска, так и для отладки конфигурации, и я на самом деле использую Debug
config.
обновление 2
Strip Debug Symbols
тоже выключен.
12 ответов:
Если ваш проект использует Swift, в конфигурации проекта/цели есть два отдельных параметра "уровень оптимизации".
убедитесь, что вы установили их правильно:
- выберите свой проект на панели Навигатор проектов
- выберите Настройки вашего проекта под деревом "проект"
- перейдите на вкладку "настройки сборки"
- Поиск "уровень оптимизации", и вы увидите две настройки, один для LLVM и один для быстрый.
- установите соответствующую настройку (
None [-O0]
для LLVM иNone [-0none]
для Swift) для рассматриваемой конфигурации сборки.выполнение этого разрешило это предупреждение для меня.
похоже, что ваш проект в режиме release. Режим выпуска компилирует приложение с большим количеством оптимизаций, но отладчики ненавидят оптимизацию, поэтому для надежной отладки приложения вам нужно переключить его в режим отладки, который уменьшает оптимизацию и добавляет кучу отладочной информации. Чтобы переключить его в режим отладки:
- нажмите на свою схему в верхнем левом углу Xcode.
- Выберите "Правка Схема..."
- нажмите на выпадающее меню "конфигурация сборки". и измените его на режим отладки.
OK нашел проблему, это предупреждение появляется только тогда, когда вы нажмете точку останова, и источник находится в проекте, где включена оптимизация, не позволяя вам смотреть реальные значения переменных (каждый объект отображается как ноль, даже если это не так)
в моем случае, это произошло только при отладке шаг за шагом через зависимость cocoapod.
поэтому, даже если у вас правильно установлены основные целевые и проектные настройки (символ отладки Strip=OFF и уровень оптимизации None), вы нужно убедиться, что это то же самое для стручка проецирует ваш удар по точке останова.
Я столкнулся с такой же проблемой сегодня, и понял (по крайней мере в моем случае). Я также использую CocoaPods, и у меня была эта проблема при запуске моей тестовой цели (Swift, смешанный с ObjC).
Я использую Xcode 7.2, с iOS 9.2 SDK.
на изображении ниже вы можете увидеть оптимизации для цели и проекта перед моим изменением:
удивительно то, что даже если разрешенная оптимизация Нет [- O0], только после изменения настройки проекта с - Os до - O0 компилятор перестал оптимизировать цель.
ниже вы можете увидеть мои окончательные настройки:
Это было решение для меня...
вдоль строк ответа гимино, если вы используете cocoapods, добавьте такую строку в Подфайл:
xcodeproj 'MyProject', 'Debug - local'=>:debug, 'Debug - staging'=>:debug, 'Debug - PRODUCTION'=>:debug
или для версий cocoapods >= 1.0 (спасибо Diejmon)
project 'MyProject', 'Debug - local'=>:debug, 'Debug - staging'=>:debug, 'Debug - PRODUCTION'=>:debug
где мой проект имеет 'отладка - местный', 'отладка - инсценировка', 'отладка производства' как отладить configuations в дополнение к стандартным 'отладка'
по умолчанию cocoapods обычно генерирует конфигурации модулей в качестве выпуска, это Строка Podfile позволяет вам сказать, что они отлаживаются.
Это было долгое время, но я наконец-то решил проблему. Есть третий флаг оптимизации
LTO
илиLink Time Optimization
и на удивление ни у кого нет упомянул об этом здесь, и по какой-то причине я тоже не обратил на это внимания. Это прямо там, надOptimization Level
настройка как вы можете видеть на многих снимках экрана размещены здесь.Итак, чтобы подвести итог, есть 3 разных флага оптимизации, которые вы хотите отключить для отладки:
- оптимизация времени соединения LLVM (
-flto
)- уровень оптимизации LLVM (
-O
)- Уровень Оптимизации Компилятора Swift
дополнительная информация о LTO: http://llvm.org/docs/LinkTimeOptimization.html
вы уверены, что ваша конфигурация отладки не оптимизирует код (он не должен)? Похоже, что вы случайно включили оптимизацию для конфигурации отладки, и вы должны отключить ее от настроек цели.
эта ошибка случилась со мной дважды, и в каждом случае была ошибка в параметре URL, используемом для запроса Службы. В одном случае URL-адрес имел некоторое пространство в разделе порта, в другом случае некоторое необязательное значение не было развернуто.
таким образом, исправление должно было убедиться, что url-адрес для запроса хорошо сформирован. Больше информации о моем случае, и аналогичная отчетность то же самое здесь.