При оценке выражений lldb должен реплицировать контекст, в котором выполняется выражение. Например, если вы остановились на методе класса, вы ожидаете, что сможете прозрачно ссылаться на ivars, и поиск метода должен быть выполнен при поиске иерархии классов.
Иногда lldb не может понятьвне контекста, и наша неудачная попытка заключить ваше выражение в правильный контекст приводит к выражениям, которые не компилируются. Вот что вы видите.
Например, люди начали делать:
guard let self = self! {}
в замыканиях, которые слабо захватывают себя. Присутствие двух Я бросило эту реконструкцию контекста для цикла. И есть много других тонкостей, которые lldb должен понять. Свифт - довольно сложный язык в этом отношении.
Так что, если вы видите это в определенном контексте, вы, вероятно, нашли другое проявление этой проблемы. Обязательно попробуйте самый последний Xcode, если можете, так как lldb недавно исправил большое количество ошибок такого рода. Если это все еще не работает, пожалуйста, сообщите об ошибке, либо с помощью http://bugs.swift.org, либо с помощью системы обратной связи Apple.
Кстати, если вам просто нужно проверить переменные, введите команду frame var
(псевдоним v
в последних версиях lldb часто работает, когда print
не удается, так как он не выполняет большинство сложных трюков, которые должен выполнять синтаксический анализатор. v
также обычно намного быстрее, так как он просто исследует памятьчем сборка, компиляция, внедрение и запуск выражения в отладчике ...