本次實踐我參照了許多先作了的同窗的博客,有盧肖明,高其,張梓靖同窗。代碼借用的是盧肖明同窗的代碼進行調試運行。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