Перейти к содержанию

Evaluate

Evaluate — для разовых вопросов: написали выражение, получили ответ, пошли дальше. Панель открывается по Ctrl+E, Enter входит в поле ввода, Esc выходит из него.

Чем отличается от Watches

Evaluate Watches
Выполняется когда вы попросили на каждой остановке
Живёт до следующего вопроса пока не удалите
Годится для вопроса, побочного эффекта наблюдения за значением во времени

Если вы ловите себя на том, что после каждого шага набираете одно и то же выражение, ему место в Watches.

Фрейм имеет значение

Выражение вычисляется в том фрейме, который выбран в Стеке вызовов. Выберите другой — и то же самое выражение может дать другой ответ или вовсе перестать разрешаться, потому что имена в области видимости стали другими.

Побочные эффекты здесь разрешены

Выражение, вызывающее функцию, действительно её вызывает — в отлаживаемой программе. Часто ради этого всё и затевается: подтолкнуть состояние, чтобы воспроизвести условие; вызвать геттер, который красиво форматирует значение; запустить проверку и посмотреть, что она скажет.

Поскольку это происходит ровно тогда, когда вы попросили, а не многократно и фоном, Evaluate — правильное для этого место. Просто помните, что состояние программы вы изменили и прогон больше не чистый.

Пока программа работает

Выражению нужна остановленная программа и фрейм, в котором вычислять. Пока программа выполняется, фрейма нет и вычислять не в чем — сначала остановите её точкой останова или паузой.

Как читать результат

Результат-структура или коллекция разворачивается так же, как узел в Переменных. Для длинного значения — большой JSON-строки, объёмного буфера — удобнее Inspector: он показывает значение целиком и умеет копировать и переформатировать его.