Отладка кода сборки с использованием Kdbg - PullRequest
2 голосов
/ 21 августа 2011

У меня есть проект с одним исходным кодом .c C и одним исходным кодом сборки .S. После компиляции и компоновки, есть ли способ отладки кода .S с помощью Kdbg? Я вызываю одну функцию .S из файла .c, но код не загружается в Kdbg.

Ответы [ 2 ]

3 голосов
/ 03 апреля 2012

Добавьте директиву .file в ваш источник, например: .file "sourceasm.s". Затем Kdbg будет использовать его как положено.

2 голосов
/ 30 сентября 2017

II только что попробовал kdbg ( интерфейс KDE для gdb , а не отладчик ядра Linux kgdb почти с тем же именем).

Кажется, у него нет правильного режима разборки, как у обычного GDB layout asm.Вы можете установить окно «память» на дизассемблирование и адрес $pc (и оно обновляется в один шаг), но это связывает окно памяти и не очень гибко для установки точек останова или прокрутки назад к инструкциям дотекущее RIP / EIP.

Даже если вы отлаживаете источник asm, иногда вы хотите, чтобы отладчик показывал вам реальную разборку, а не / источник asm.Например, в коде, который использует макросы или NASM %rep для повторения блоков.

AFAICT, kdbg не очень хороший выбор для отладки asm.текстовый режим GDB с layout asm / layout reg в порядке;см. нижнюю часть вики для получения советов.Я также попробовал 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.

...