我们如何使用gdb获取缓冲区值

时间:2019-02-24 18:02:44

标签: c gdb

我想了解堆栈的工作原理。 我正在使用gdb反汇编我的代码。

我反汇编以下代码:

int main(){
   char*buf;
   buf="TEST";
   return 0;
}

编译后,我运行gdb并反汇编代码。 我得到了这个结果:

   0x080483db <+0>: push   %ebp
   0x080483dc <+1>: mov    %esp,%ebp
   0x080483de <+3>: sub    $0x10,%esp
   0x080483e1 <+6>: movl   $0x8048470,-0x4(%ebp)
   0x080483e8 <+13>:    mov    $0x0,%eax
   0x080483ed <+18>:    leave  
   0x080483ee <+19>:    ret  

我在指令0x080483e8处设置了一个断点,然后运行。

当我在地址0x8048470上打印值时,我得到了TEST\n,但是当我执行命令x\s $ebp-0x4时却没有得到相同的结果。 由于0x8048470的内容已移至-0x4(%ebp),两个地址是否应获得相同的值?

0 个答案:

没有答案