Есть ли у нас способ просмотра сборки и кода c с использованием gdb.
дизассемблировать имя_функции показывает только сборку, я пытался найти способ для easliy map c code для сборки. Благодаря
Есть ли у нас способ просмотра сборки и кода c с использованием gdb.
дизассемблировать имя_функции показывает только сборку, я пытался найти способ для easliy map c code для сборки. Благодаря
Вы можете запустить gdb в режиме текстового интерфейса (TUI):
gdb -tui <your-binary>
(gdb) b main
(gdb) r
(gdb) layout split
Команда layout split
делит окно на две части: одна из них показывает исходный код, а другая - соответствующую сборку.
Несколько других трюков:
Если вы не хотите использовать режим TUI (например, ваш терминал ему не нравится), вы всегда можете:
x /12i $pc
что означает печать 12 инструкций с текущего адреса счетчика программ - это также работает с трюками выше (деманлинг, инструкции по шагам и т.д.).
Трюк "x/12i $pc" работает как в gdb, так и cgdb, тогда как "разметка раскладки" работает только в gdb.
Наслаждайтесь:)
Попробуйте disassemble /m
.
Обратитесь к http://sourceware.org/gdb/current/onlinedocs/gdb/Machine-Code.html#Machine-Code
Формат аналогичен формату objdump -S
и смешивает источник с разборкой. Пример выходного отрывка:
10 int i = 0;
=> 0x0000000000400536 <+9>: movl $0x0,-0x14(%rbp)
11 while (1) {
12 i++;
0x000000000040053d <+16>: addl $0x1,-0x14(%rbp)
Для вашей цели попробуйте
objdump -S <your_object_file>
от человека objdump:
-S
--source
Display source code intermixed with disassembly, if possible.
Implies -d.