我是GDB的新手,所以我有一些问题:

  • 如何查看堆栈的内容? 示例:要查看寄存器的内容,我键入info registers.对于堆栈,应该是什么呢?

  • 我怎样才能看到$0x4(%esp)的内容?当我输入print /d $0x4(%esp)时,GDB给出一个错误.

平台:Linux和GDB

推荐答案

info frame以显示堆栈帧信息

要读取给定地址的内存,您应该查看x

对于祸不单行,x/d $esp对于有符号的x/u $esp,对于无符号的等等x使用格式语法,你也可以通过x/i $eip来看看当前的指令,等等.

C++相关问答推荐

奇怪的print在getchar和getchar跳过后不工作

整值的最后一个字节如何影响C转换中的char强制转换?

命名信号量不会像进程之间同步中假设的那样工作

当包含头文件时,gcc会发出隐式函数声明警告

为什么已经设置的值在C中被重置为for循环条件中的新值?

括号中的堆栈实现错误问题

当我更改编译优化时,相同的C代码以不同的方式运行

使用双指针动态分配和初始化2D数组

For循环中的变量行为不符合预期.[C17]

为什么Fread()函数会读取内容,然后光标会跳到随机位置?

如何使用唯一数字对整型进行分区

在C中创建任意类型的只读指针参数

C语言中浮点数的取整方式浮点数尾数超过23位时如何取整剩余部分

链表删除 node 错误

将数字的每一位数平方,并使用C将它们连接为一个数字(程序不能正确处理0)

STM32 FATFS用户手册(Um1721)中的代码正确吗?

按字典顺序打印具有给定字符的所有可能字符串

如何在Rust中处理C的longjmp情况?

malloc 属性不带参数

C 中 struct 体自赋值是否安全?特别是如果一侧是指向 struct 的指针?