GDB Hacks – i386参数入参顺序
在i386CPU中调用函数时,参数的传递顺序是什么?类似函数中括号内的参数一样,从左到右依次入栈还是从右到左入栈。将通过gdb的方式来观察参数的传递过程。
如下例子
使用编译命令编译
gcc -g func_param.c
使用gdb调试运行,观察参数入参顺序。
Tips
在使用gdb的break命令时,如果指定函数名的方式下断点
break main
程序会跳过基础的保存上一个栈ebp
开辟内存空间等指令的过程
也就是程序不会在首行就停下来,而是执行了部分指令后才会停下来。
在函数的入口位置停下来的方式
break *(main)
加上括号,方便后续指定位置断点使用。
加上了*之后,程序就能在程序入口位置停下来。
fun1 --两个参数
查看main函数的汇编代码,如下
调用fun1前,对应的栈数据