Как стать автором
Обновить

Симулятор-Отладчик x86-кода

Уровень сложностиСложный
Время на прочтение2 мин
Количество просмотров2.8K

Разрабатывая код для очень узких мест, привычного стандартного набора средств и отладчиков зачастую не хватает, когда нам требуется отладить фрагмент алгоритма именно в конкретном случае, в конкретном состоянии окружения и массивов данных.

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

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

В таких случаях удобно было бы использовать не классическую пошаговую эмуляцию, а более‑менее точную симуляцию с исполнением кода в цикле парсинга инструкций и записью в журнал состояний всех регистров на отдельных операциях всех итераций.

На старте разработки подобного инструмента за образец был взят данный сервис не в буквальном смысле, а как направление функциональности GUI, так как эмуляция в нём точная, но не полная и с симуляцией виртуального окружения с демонстрацией.

Вниманию аудитории разработчиков здесь представляется именно прототип концепции отладчика с навигацией как по отдельным инструкциям, так и по моментам времени, закреплённых за отдельными итерациями.

Набор поддерживаемых инструкций пока мал и ограничен лишь теми, что требовались
для отладки конкретных участков кода. В симуляторе имеется простое окружение на
основе Canvas‑графики, а зажимая клавиши HOME и END можно проматывать итерации.

Запустить симулятор отладки можно по ссылке.
Исходный текст пока размещён только в gist-репозитории.

Имеется возможность подгрузки собственных стилей (вырви глаз пример) и листингов.
В меню двойным кликом по стилю можно его открыть в поле редактирования и изменять в режиме реального времени.

P. S.: Всё это безобразие разрабатывалось для собственных нужд и не было написано с чистого листа, а лишь переработка эмулятора моего соседнего проекта, что можно заметить по исходному коду, где много лишнего.

Если кому‑нибудь окажется полезным, буду рад выслушать предложения по развитию движка.

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 16: ↑15 и ↓1+22
Комментарии19

Публикации

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
24 сентября
Astra DevConf 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн