com: display/i $eip display/x $ebp display/x $esp break main # gdb -x com example1 (gdb) list 1 (gdb) [Enter] (gdb) disassemble main #callの次のステップのアドレス確認 (gdb) disassemble func (gdb) run #eip/ebp/esp確認 (gdb) si (gdb) [Enter] #push %ebp実行後 (gdb) x/5x $esp #sfp/ret/引数確認 (gdb) si (gdb) [Enter] #leave実行後 (gdb) x/4x $esp #esp/ebpの変化、retアドレス確認 (gdb) si (gdb) continue (gdb) quit # cat example2.c # ./example2 # cat example3.c # ./example3 # gdb -x com example3 (gdb) disassemble main (gdb) print 0x804848a - 0x8048480 #+10の意味 (gdb) disassemble func (gdb) break *0x804845e (gdb) run (gdb) continue (gdb) x/4x $ebp (gdb) x/4x buf1 (gdb) x/4x buf2 (gdb) next #strcpy実行後の状態 (gdb) x/4x buf1 (gdb) x/4x $ebp (gdb) si (gdb) [Enter] (gdb) continue (gdb) quit