对于 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
是一个错误。