Просмотр и сборки, и кода C Есть ли у нас способ просмотра сборки и кода c с использованием gdb. дизассемблировать имя_функции показывает только сборку, я пытался найти способ для easliy map c code для сборки. Благодаря Ответ 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.
Ответ 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.