Сравнение состояния переменных в IntelliJ
Немного извращений из трудовыебудней.
Понадобилось мне отладить Zinc (инкрементальный компилятор Scala), который немного странно себя вел в двух практически одинаковых сценариях: вроде все входы одинаковые, но выход отличается. Поборов уровни вложенности, докопался до точки входа в непосредственно процесс компиляции и возникла проблема: переменных/данных до фига, да еще каждая закопана в куче возможно повторяющихся объектах с несколькими уровнями вложенности и без нормального строкового представления. Разворачивать вручную это все в дебаггере IntelliJ — очень муторно.
Выяснилось, что можно настроить комбинацию клавиш, чтобы раскрыть все переменные на 1 уровень. Повторив операцию 2-3 раза, можно получить вполне развернутый слепок всех переменных. Вставляем его в diff и повторяем операцию для другого сценария. Будут мешаться адреса объектов из стандартного toString
— меняем тупо регуляркой @[a-f\d]+
на @hash
, и после этого все различия будут как на ладони.