GDB调试汇编堆栈过程的学习 GDB调试汇编堆栈过程的学习

分析过程

这是我的C源文件:

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

  • 1.安装32位兼容包

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

  • 2.使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编,然后使用gdb example指令进入gdb调试器;进入之后先在main函数处设置一个断点,再run一下,使用disassemble指令获取汇编代码,用i(info) r(registers)指令查看各寄存器的值:

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

  • 3.可见此时主函数的栈基址为0xffffd058,用x(examine)指令查看内存地址中的值,但目前%esp所指堆栈内容为0,%ebp所指内容也为0

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

  • 4.首先,结合display命令和寄存器或pc内部变量,做如下设置:display /i $pc,这样在每次执行下一条汇编语句时,都会显示出当前执行的语句。下面展示每一步时%esp、%ebp和堆栈内容的变化:

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

  • 5.之后反复使用si、i r、disassemble等指令来查看:

![](http://images2015.cnblogs.com/blog/886760GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

gdb调试分析汇总表

GDB调试汇编堆栈过程的学习
GDB调试汇编堆栈过程的学习

参考资料