Gdb
GDB 命令列印緩衝區(堆棧)的起始地址
對於 gdb 調試器
(gdb) 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
是一個錯誤。