Evaluate¶
Evaluate — для разовых вопросов: написали выражение, получили ответ, пошли дальше. Панель открывается по Ctrl+E, Enter входит в поле ввода, Esc выходит из него.
Чем отличается от Watches¶
| Evaluate | Watches | |
|---|---|---|
| Выполняется | когда вы попросили | на каждой остановке |
| Живёт | до следующего вопроса | пока не удалите |
| Годится для | вопроса, побочного эффекта | наблюдения за значением во времени |
Если вы ловите себя на том, что после каждого шага набираете одно и то же выражение, ему место в Watches.
Фрейм имеет значение¶
Выражение вычисляется в том фрейме, который выбран в Стеке вызовов. Выберите другой — и то же самое выражение может дать другой ответ или вовсе перестать разрешаться, потому что имена в области видимости стали другими.
Побочные эффекты здесь разрешены¶
Выражение, вызывающее функцию, действительно её вызывает — в отлаживаемой программе. Часто ради этого всё и затевается: подтолкнуть состояние, чтобы воспроизвести условие; вызвать геттер, который красиво форматирует значение; запустить проверку и посмотреть, что она скажет.
Поскольку это происходит ровно тогда, когда вы попросили, а не многократно и фоном, Evaluate — правильное для этого место. Просто помните, что состояние программы вы изменили и прогон больше не чистый.
Пока программа работает¶
Выражению нужна остановленная программа и фрейм, в котором вычислять. Пока программа выполняется, фрейма нет и вычислять не в чем — сначала остановите её точкой останова или паузой.
Как читать результат¶
Результат-структура или коллекция разворачивается так же, как узел в Переменных. Для длинного значения — большой JSON-строки, объёмного буфера — удобнее Inspector: он показывает значение целиком и умеет копировать и переформатировать его.