Gdb

GDB 命令列印緩衝區(堆棧)的起始地址

  • March 11, 2018

對於 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是一個錯誤。

引用自:https://unix.stackexchange.com/questions/429533