sir*_*rge 47
您可以在文本用户界面(TUI)模式下运行gdb :
gdb -tui <your-binary>
(gdb) b main
(gdb) r
(gdb) layout split
Run Code Online (Sandbox Code Playgroud)
该layout split命令将窗口分为两部分 - 其中一部分显示源代码,另一部分显示相应的程序集.其他一些技巧:
如果您不想使用TUI模式(例如您的终端不喜欢它),您可以随时执行:
x /12i $pc
Run Code Online (Sandbox Code Playgroud)
这意味着从当前程序计数器地址打印12条指令 - 这也适用于上面的技巧(解码,步进指令等).
"x/12i $ pc"技巧在gdb和cgdb中都有效,而"layout split"仅适用于gdb.
请享用 :)
Yor*_*war 31
试试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)
Run Code Online (Sandbox Code Playgroud)
小智 6
为了您的目的,请尝试
objdump -S <your_object_file>
Run Code Online (Sandbox Code Playgroud)
来自man objdump:
-S
--source
Display source code intermixed with disassembly, if possible.
Implies -d.
Run Code Online (Sandbox Code Playgroud)