在GDB中查找argv地址

时间:2017-09-18 16:22:35

标签: c gdb stack gdbinit

我正在尝试了解堆栈是如何工作的,所以我编写了一个非常简单的C程序来运行GDB并检查堆栈:

int main(int argc, char **argv)
{
    char buf[100];
    strcpy(buf, argv[1]);
}

我编译了程序并在GDB中为main()函数的开头设置了一个断点。我对堆栈在执行中应该如何看待的期望是:

降低内存地址... | ebp = esp =堆栈帧指针|返回地址| argv |弧| ......更高的内存地址

随着程序的进行,堆栈将在较低内存地址的方向上增加(为bur局部变量分配100个字节)

看看GDB,情况似乎并非如此。

  • 堆栈框架似乎位于0xbffff048
  • 返回地址似乎是0xbffff04c
  • 但看起来argc(值为2)位于0xbffff050

argv在哪里?任何人都可以看看我的屏幕截图并帮助我做出正面或反面的事情吗?

谢谢!

Screenshot of GDB running

0 个答案:

没有答案