При попытке войти в код AFNetworking выдается следующее предупреждение:
[Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available.
И, конечно, я не могу отладить код. Чтобы быть конкретным, я пытаюсь отладить UIImageView+AFNetworking
категорию, которая кажется невозможной. Изменение кода не имеет никакого эффекта (пробовал NSLog
и т. Д.), И при попытке войти в компиляторы переходит к ассемблерному коду и отображается UIImageView+TVASTAFNetworking
как имя категории, которого нет нигде в базе кода.
Использование Xcode 7. iOS 9 и 8. Cocoapods (без фреймворка)
ОБНОВЛЕНИЕ
Я забыл упомянуть, что Оптимизатор настроен none
как для конфигурации выпуска, так и для отладки, и я фактически использую Debug
конфигурацию.
ОБНОВЛЕНИЕ 2
Strip Debug Symbols
Также выключен
ios
afnetworking-2
xcode7
Mojtaba
источник
источник
Strip Debug Symbols
выключен.Ответы:
Если ваш проект использует Swift, в конфигурации проекта / цели есть две отдельные настройки «Уровень оптимизации».
Убедитесь, что вы установили их оба правильно:
None [-O0]
для LLVM иNone [-0none]
для Swift) для рассматриваемой конфигурации сборки.Это решило это предупреждение для меня.
источник
po
,p
,expr
...?Похоже, ваш проект находится в режиме выпуска. Режим выпуска компилирует приложение с большим количеством оптимизаций, но отладчики ненавидят оптимизацию, поэтому для надежной отладки приложения вам необходимо переключить его в режим отладки, который уменьшает оптимизацию и добавляет кучу отладочной информации. Чтобы переключить его в режим отладки:
источник
Это предупреждение появляется только тогда, когда вы достигаете точки останова, а источник находится в проекте, где включена оптимизация, что не позволяет вам наблюдать реальные значения переменных (каждый объект отображается как ноль, даже если это не так)
В моем случае это происходило только при пошаговой отладке зависимости cocoapod.
Таким образом, даже если у вас правильно установлены основная цель и настройки проекта (Strip Debug Symbol = OFF, а уровень оптимизации - None), вам нужно убедиться, что он совпадает с проектом Pod, с которого вы достигли точки останова.
источник
None [-O0]
)pod install
снова. Измени это так .Оказывается, что после импорта старого проекта (Xcode 7.x +) в новый Xcode 8.3 (8E162), вероятно, из-за оптимизации компилятора, Swift Compiler - Optimization Level был по умолчанию установлен на Быструю оптимизацию одного файла :
Изменив его на нет, решил проблему:
источник
Editor
->Validate Settings
затем подтвердите все изменения. Тогда вы должны получитьУстановите Debug в
None
.источник
Это было решением для меня ...
В дополнение к ответу gimino, если вы используете cocoapods, добавьте такую строку в Podfile:
или для версий cocoapods> = 1.0 (спасибо Diejmon)
Где MyProject имеет «Debug - local», «Debug - staging», «Debug - PRODUCTION» в качестве конфигурации отладки в дополнение к стандартному «Debug»
По умолчанию cocoapods обычно генерирует конфигурации pod как Release, эта строка Podfile позволяет вам сказать, что они отлажены.
источник
Я столкнулся с той же проблемой сегодня, и понял это (по крайней мере, в моем случае). Я также использую CocoaPods, и у меня была эта проблема при запуске моей цели тестирования (Swift, смешанный с ObjC).
Я использую Xcode 7.2, с iOS 9.2 SDK.
На изображении ниже вы можете увидеть оптимизации для цели и проекта до моего изменения:
Удивительно, что несмотря на то, что разрешенная оптимизация отсутствует [-O0] , только после изменения настройки проекта с -Os на -O0 компилятор прекратил оптимизацию цели.
Ниже вы можете увидеть мои окончательные настройки:
источник
Это было давно, но я наконец решил проблему. Там не третий флаг оптимизации
LTO
илиLink Time Optimization
и удивительно , никто уже упомянул об этом здесь и по какой - то причине я не обращать на это внимание либо. Это прямо надOptimization Level
настройкой, как вы можете видеть на многих скриншотах, размещенных здесь.Итак, подведем итог: есть 3 различных флага оптимизации, которые вы хотите отключить для отладки:
-flto
)-O
)Больше информации о LTO: http://llvm.org/docs/LinkTimeOptimization.html
источник
Если вам нужно отключить оптимизацию для ваших модулей Swift, чтобы вы могли отлаживать их, добавьте следующее в свой
Podfile
. Это отключит оптимизацию только для отладочных сборок.источник
Вы уверены, что ваша конфигурация отладки не оптимизирует код (не должен)? Похоже, вы случайно включили оптимизацию для конфигурации отладки, и вы должны отключить ее в настройках цели.
источник
Эта ошибка произошла со мной дважды, и в каждом случае была ошибка в параметре URL, используемом для запроса службы. В одном случае URL-адрес имел некоторое пространство в разделе порта, в другом случае какое-то Необязательное значение не было развернуто.
Таким образом, исправление должно было убедиться, что URL для запроса правильно сформирован. Больше информации о моем случае и аналогичных репортажах здесь тоже самое .
источник
Все, что я сделал, это очистил (
Product > Clean
) мой проект и запустил его сноваисточник
Это может быть упрощением, но вы строите для Release или с оптимизацией (которая удаляет символы из Swift или LLVM) слишком высоко? Если это так, отредактируйте схему и переключитесь на «Отладка» или измените параметры сборки для быстрой или LLVM-оптимизации на «Нет» (0).
источник
На случай, если кто-то столкнется с этой проблемой при отладке модуля, который использует библиотеку C внутри, есть еще одна вещь, которую вы должны изменить в настройках проекта, чтобы он работал в дополнение ко всему, что перечислено в потоке.
Перейдите в настройки проекта Pods -> Ваша цель использования C -> Настройки сборки -> Apple Clang - Пользовательские флаги компилятора -> Другие флаги C и удалите
-O3
флаг, который каким-то образом туда попал.источник