Разрабатывая код для очень узких мест, привычного стандартного набора средств и отладчиков зачастую не хватает, когда нам требуется отладить фрагмент алгоритма именно в конкретном случае, в конкретном состоянии окружения и массивов данных.
Требуется вручную в конкретных точках во время пошаговой отладки выставлять все необходимые специфические значения по нужным регистрам, чтобы отследить реакцию кода в исключительно данном моменте и стараясь не упустить ни бита из внимания.
Подавляющее большинство средств отладки не имеют функции отката во времени, что могло бы гораздо упростить отладку в случаях проскока критически важных команд, где значения регистров были очень показательны, но утерялись в данной итерации.
В таких случаях удобно было бы использовать не классическую пошаговую эмуляцию, а более‑менее точную симуляцию с исполнением кода в цикле парсинга инструкций и записью в журнал состояний всех регистров на отдельных операциях всех итераций.
На старте разработки подобного инструмента за образец был взят данный сервис не в буквальном смысле, а как направление функциональности GUI, так как эмуляция в нём точная, но не полная и с симуляцией виртуального окружения с демонстрацией.
Вниманию аудитории разработчиков здесь представляется именно прототип концепции отладчика с навигацией как по отдельным инструкциям, так и по моментам времени, закреплённых за отдельными итерациями.
Набор поддерживаемых инструкций пока мал и ограничен лишь теми, что требовались
для отладки конкретных участков кода. В симуляторе имеется простое окружение на
основе Canvas‑графики, а зажимая клавиши HOME и END можно проматывать итерации.
Запустить симулятор отладки можно по ссылке.
Исходный текст пока размещён только в gist-репозитории.
Имеется возможность подгрузки собственных стилей (вырви глаз пример) и листингов.
В меню двойным кликом по стилю можно его открыть в поле редактирования и изменять в режиме реального времени.
P. S.: Всё это безобразие разрабатывалось для собственных нужд и не было написано с чистого листа, а лишь переработка эмулятора моего соседнего проекта, что можно заметить по исходному коду, где много лишнего.
Если кому‑нибудь окажется полезным, буду рад выслушать предложения по развитию движка.
ссылка на оригинал статьи https://habr.com/ru/articles/724096/
Добавить комментарий