对于一个C文件,我们有时可能需要查看底层的汇编代码,这是就需要使用到GDB工具。众所周知,GDB是一个代码调试工具,当然它也能查看汇编代码了。
我拿一个非常简单的例子演示:
int foo()
{
return 123;
}
void main()
{
foo();
}
通过 gcc 将代码编译成可执行文件 a.out ,需要加 -g 选项。
> gcc main.c -g
然后我们就进入GDB调试环节。
> gdb
(gdb) file a.out
Reading symbols from a.out...
(gdb) break 3
Breakpoint 1 at 0x1131: file main.c, line 3.
(gdb) l
1 int foo()
2 {
3 return 123;
4 }
5
6 void main()
7 {
8 foo();
9 }
(gdb) disas foo
Dump of assembler code for function foo:
0x0000000000001129 <+0>: endbr64
0x000000000000112d <+4>: push %rbp
0x000000000000112e <+5>: mov %rsp,%rbp
0x0000000000001131 <+8>: mov $0x7b,%eax
0x0000000000001136 <+13>: pop %rbp
0x0000000000001137 <+14>: retq
End of assembler dump.
(gdb)
这样就可以很自然地进入可执行文件并查看 foo 函数的汇编代码了。