GDB命令打印缓冲区(堆栈)的起始地址

GDB命令打印缓冲区(堆栈)的起始地址

对于 gdb 调试器

(gdb) p &buffer

该命令是用来打印缓冲区(堆栈)起始位置的内容,还是打印地址?

如果是内容,如何打印地址?

答案1

这取决于是什么类型buffer

最有可能的buffer是指向缓冲区开头的指针。它的 C 风格声明可能是struct stackElement *buffer;或类似的东西(注意星号!)。在这种情况下:

  • p &buffer打印指针本身存储的地址(即“缓冲区的地址的地址”)
  • p buffer应该打印指针变量的值buffer,即缓冲区的地址。
  • p *buffer应该打印缓冲区的内容。

如果buffer是某种结构类型,而不是指针(示例 C 声明可能struct stackElement buffer;不带星号),则:

  • p &buffer打印结构体所在地址,即缓冲区的地址
  • p buffer打印此结构的内容(= 如果这是一个堆栈,则可能是第一个堆栈元素)
  • p *buffer是一个错误。

相关内容