Я буду писать про программирование игр, но в целом это может относится и к другим областям точно так же. Состояние игры — это значения переменных. Отладчики позволяют просматривать эти значения, но в достаточно тупом режиме, вот переменная, вот ее значение. Если это указатель, то вот значение того что по указателю, если массив, то вот все 100500 элементов массива, а если это связанный список, то дебаггер про это вообще не знает и ходи сам по указателям. А хотелось бы, вытащить из массива или списка элементы соответствующие какому-то критерию, смотреть только нужные сейчас поля, вытащить какие-то поля из связанных переменных. Возможно поменять какие-то значения прямо в рантайме.
Можно через какой-нибудь рефлекшн собирать значения всех переменных и отдавать их вовне. Ну самый простой вариант сервер внутри себя запускать, к которому подключаться браузером, и в js создавать переменные с теми же именами и значениями и для отладки в консоли браузера на js писать всякие запросы.
А можно изначально хранить все переменные описывающие состояние игры, не как просто члены классов, а в спец.хранилище типа базы данных с универсальным интерфейсом. Тогда можно делать клиент, позволяющий работать с этой "базой данных", эта же база пригодится при создании всяких интерфейсов, чтобы прямо в описании интерфейса писать какие данные в нем должны быть показаны.
Наверняка такое сто раз уже придумано и сделано. Где посмотреть и почитать про такое?