Подтвердить что ты не робот

Просмотр и сборки, и кода C

Есть ли у нас способ просмотра сборки и кода c с использованием gdb.

дизассемблировать имя_функции показывает только сборку, я пытался найти способ для easliy map c code для сборки. Благодаря

4b9b3361

Ответ 1

Вы можете запустить gdb в режиме текстового интерфейса (TUI):

gdb -tui <your-binary>
(gdb) b main
(gdb) r
(gdb) layout split

Команда layout split делит окно на две части: одна из них показывает исходный код, а другая - соответствующую сборку. Несколько других трюков:

  • set disassembly-flavor intel - если ваш предпочитает нотацию Intel
  • set print asm-demangle - отображает имена С++ в режиме сборки
  • ni - следующая инструкция
  • si - шаговая инструкция

Если вы не хотите использовать режим TUI (например, ваш терминал ему не нравится), вы всегда можете:

x /12i $pc

что означает печать 12 инструкций с текущего адреса счетчика программ - это также работает с трюками выше (деманлинг, инструкции по шагам и т.д.).

Трюк "x/12i $pc" работает как в gdb, так и cgdb, тогда как "разметка раскладки" работает только в gdb.

Наслаждайтесь:)

Ответ 2

Попробуйте 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)

Ответ 3

Для вашей цели попробуйте

objdump -S <your_object_file>

от человека objdump:

-S
--source
 Display source code intermixed with disassembly, if possible.
 Implies -d.