TJCLK Asked: 2018-03-12 00:18:44 +0800 CST2018-03-12 00:18:44 +0800 CST 2018-03-12 00:18:44 +0800 CST GDB 命令打印缓冲区(堆栈)的起始地址 772 对于 gdb 调试器 (gdb) p &buffer 这个命令是用来打印缓冲区(栈)的起始内容,还是打印地址? 如果是内容,如何打印地址? gdb stack 1 个回答 Voted Best Answer telcoM 2018-03-12T01:03:22+08:002018-03-12T01:03:22+08:00 这取决于是什么类型buffer。 最有可能buffer是指向缓冲区开始的指针。它的 C 风格声明可能是struct stackElement *buffer;或类似的(注意星号!)。在这种情况下: p &buffer打印存储指针本身的地址(即“缓冲区地址的地址”) p buffer应该打印buffer指针变量的值,即缓冲区的地址。 p *buffer应该打印缓冲区的内容。 如果buffer是某种结构类型,而不是指针(示例 C 声明可能struct stackElement buffer;没有星号),则: p &buffer打印结构所在的地址,即缓冲区的地址 p buffer打印此结构的内容(= 如果这是一个堆栈,可能是第一个堆栈元素) p *buffer是一个错误。
这取决于是什么类型
buffer
。最有可能
buffer
是指向缓冲区开始的指针。它的 C 风格声明可能是struct stackElement *buffer;
或类似的(注意星号!)。在这种情况下:p &buffer
打印存储指针本身的地址(即“缓冲区地址的地址”)p buffer
应该打印buffer
指针变量的值,即缓冲区的地址。p *buffer
应该打印缓冲区的内容。如果
buffer
是某种结构类型,而不是指针(示例 C 声明可能struct stackElement buffer;
没有星号),则:p &buffer
打印结构所在的地址,即缓冲区的地址p buffer
打印此结构的内容(= 如果这是一个堆栈,可能是第一个堆栈元素)p *buffer
是一个错误。