II только что попробовал kdbg
( интерфейс KDE для gdb , а не отладчик ядра Linux kgdb
почти с тем же именем).
Кажется, у него нет правильного режима разборки, как у обычного GDB layout asm
.Вы можете установить окно «память» на дизассемблирование и адрес $pc
(и оно обновляется в один шаг), но это связывает окно памяти и не очень гибко для установки точек останова или прокрутки назад к инструкциям дотекущее RIP / EIP.
Даже если вы отлаживаете источник asm, иногда вы хотите, чтобы отладчик показывал вам реальную разборку, а не / источник asm.Например, в коде, который использует макросы или NASM %rep
для повторения блоков.
AFAICT, kdbg
не очень хороший выбор для отладки asm.текстовый режим GDB с layout asm
/ layout reg
в порядке;см. нижнюю часть вики x86 для получения советов.Я также попробовал https://github.com/cs01/gdbgui. У него есть режим разборки, но он не очень хорош.
Как говорит @ivan, kgdb позволит вам отладить исходный код asmисходные файлы , если вы добавите достаточно метаданных, чтобы знать, из какого исходного файла получен объект.
- gcc: Сборка с
gcc -g foo.S
- NASM: Соберите с
nasm -felf64 -g -Fdwarf
, чтобы включить отладочную информацию DWARF.(По умолчанию NASM - это информация отладки STABS, которая также работает.) - YASM: Сборка с
yasm -felf64 -gdwarf2
.
См. Сборка 32-двоичные файлы в 64-разрядной системе (набор инструментов GNU) для получения дополнительной информации о создании статических / динамических двоичных файлов из источника asm.