«QEMU умеет логировать каждую исполняемую инструкцию в реальном времени»

Пишет нам LLM. Надо будет как-нибудь проверить это утверждение.

qemu-system-x86_64 -d in_asm -D trace.log ./disk.img

-d in_asm логирует дизассемблированный код, exec — выполнение.
-D qemu.log — файл лога.

QEMU’s tracing framework (trace-events) и System-level instrumentation
могут включать события на уровне инструкций при соответствующей конфигурации (см. документацию QEMU trace).

QEMU может трассировать исполнение инструкций EBC (EFI Byte Code)
в режимах, где код переводится/интерпретируется через TCG (software emulation) —
либо через встроенные трассирующие события, либо через TCG-плагины,
EBC реализован в QEMU как отдельная целевая архитектура/интерпретатор,
и её инструкции проходят через механизм трансляции/интерпретации QEMU (TCG).
Поэтому механизмы трассировки TCG и плагины применимы к EBC.
EBC в QEMU проходит через TCG/интерпретатор, и вы можете логировать инструкции через QEMU tracing или TCG‑плагины
либо с помощью опций -d/trace. В этом режиме можно получить запись исполнения отдельных инструкций
(или переведённых блоков) и даже вызывать колбэки для каждой инструкции через QEMU TCG Plugins.

Убедитесь, что QEMU использует TCG (software emulation) для EBC,
для EBC поведение зависит от реализации вывода дизассемблера для EBC.

Ограничения: требует сборки/включения трассировки или плагина,
сильно замедляет исполнение и
не сработает если используется аппаратное ускорение, которое обходит интерпретатор.

https://www.qemu.org/docs/master/about/emulation.html
(я не вижу EBC в списке архитектур, в отличии от LLM)

https://www.qemu.org/docs/master/devel/index-tcg.html

Отредактировано Лис (2026-01-16 06:04:05)