本次实践我参照了许多先作了的同窗的博客,有卢肖明,高其,张梓靖同窗。代码借用的是卢肖明同窗的代码进行调试运行。linux
gcc -g gdbtest.c -o gdbtest -m32
命令在64位的机器上产生32位汇编代码在使用gdb进行调试运行时,有cgdb和gdb两种工具,我建议你们使用张梓靖同窗使用的cgdb工具,由于使用时能够随时看到本身的源代码,看到咱们的断点在哪里,每一步返回值到了哪行,更加直观。编程
使用b main指令在main函数处设置断点,而后,使用r指令运行代码,使用disassemble指令获取汇编代码
sass
使用display /i $pc(结合display命令和寄存器/pc内部变量)指令进行设置
函数
将上一个函数的基址入栈,从当前%esp开始做为新基址:
工具
call指令将下一条指令的地址入栈,此时%esp,%ebp和堆栈的值为:
学习
函数f修改了%esp,用leave指令恢复。
spa
ret结束main函数
3d