在上一篇《GDB调试技巧实战–为release版本的函数寻找参数值》中,我们探讨了一种为函数找参数的办法,
但是,那是最理想的情况 -
- 编译时没有使用-fomit-frame-pointer。
- 编译时没有开启优化。
还是接着用上节的c代码,让我们详细看看call1函数在不同编译条件下的汇编代码。
- 没使用-fomit-frame-pointer,没优化
一切都很完美(rbp是栈基,rsp是占顶,使用edi/esi等寄存器传参,没用的变量也分配了空间):
gcc release_core_csdn.c
(gdb) disass call1
Dump of assembler code for function call1:
0x00000000004007df <