1. 程式人生 > >gdb檢視記憶體地址和棧中的值

gdb檢視記憶體地址和棧中的值

gdb檢視指定地址的記憶體地址的值:examine 簡寫 x-----使用gdb> help x 來檢視使用方式
     x/ (n,f,u為可選引數)
n: 需要顯示的記憶體單元個數,也就是從當前地址向後顯示幾個記憶體單元的內容,一個記憶體單元的大小由後面的u定義
f:顯示格式
               x(hex) 按十六進位制格式顯示變數。
               d(decimal) 按十進位制格式顯示變數。
               u(unsigned decimal) 按十進位制格式顯示無符號整型。
               o(octal) 按八進位制格式顯示變數。
               t(binary) 按二進位制格式顯示變數。
               a(address) 按十六進位制格式顯示變數。
               c(char) 按字元格式顯示變數。
               f(float) 按浮點數格式顯示變數
u:每個單元的大小,按位元組數來計算。
預設是4 bytes。GDB會從指定記憶體地址開始讀取指定位元組,並把其當作一個值取出來,並使用格式f來顯示
               b:1 byte     h:2 bytes     w:4 bytes g:8 bytes
     比如x/3uh 0x54320表示從記憶體地址0x54320讀取內容,h表示以雙位元組為單位,3表示輸出3個單位,u表示按照十六進位制顯示。
    from http://www.cnblogs.com/super119/archive/2011/03/26/1996125.html

gdb打印表達式的值:print/f 表示式

f是輸出的格式,x/d/u/o/t/a/c/f

表示式可以是當前程式的const常量,變數,函式等內容,但是GDB不能使用程式中所定義的巨集
檢視當前程式棧的內容: x/10x $sp-->列印stack的前10個元素
檢視當前程式棧的資訊: info frame----list general info about the frame
檢視當前程式棧的引數: info args---lists arguments to the function
檢視當前程式棧的區域性變數: info locals---list variables stored in the frame
檢視當前暫存器的值:info registers(不包括浮點暫存器) info all-registers(包括浮點暫存器)
檢視當前棧幀中的異常處理器:info catch
(exception handlers)
from http://blog.chinaunix.net/uid-29062294-id-4255572.html