Переход на сборку в gdb

Есть ли способ переключиться на сборку при отладке программы на C или C++ в gdb? (При условии, что доступны все исходные файлы и соответствующие им файлы сборки)

Ответов (5)

Решение

Есть способ дизассемблировать функцию или определенный участок кода, это то, что вам нужно?

Команда для этого будет disassemble <function name> или ячейкой памяти.

Это то, о чем вы говорите?

(gdb) help disassemble
Disassemble a specified section of memory.
Default is the function surrounding the pc of the selected frame.
With a single argument, the function surrounding that address is dumped.
Two arguments are taken as a range of memory to dump.

In the new gdb version 7.0, the disassemble command can take a new argument /m which makes it emit mixed source and disassembly.

Этот вопрос также задавался в googlegroup cgdb https://groups.google.com/forum/?hl=de&fromgroups=#!topic/cgdb-users/E-jZCJiBAQQ

Пока нет ответа о том, почему макет asm не работает

Изменить: они недавно опубликовали и сказали, что это функция, которая еще не реализована. (проверьте ссылку выше)

Использование команды disas, вероятно, сделает то, что вы хотите.

Согласно внутренней справке, команда disas выполняет следующие действия:

Disassemble a specified section of memory.
Default is the function surrounding the pc of the selected frame.
With a single argument, the function surrounding that address is dumped.
Two arguments are taken as a range of memory to dump.

Вы можете переключиться на asm layout в gdb:

(gdb) layout asm

См. Здесь для получения дополнительной информации.