GDB檢視記憶體命令(x命令)

2022-04-18 16:14:17 字數 1058 閱讀 2688

可以使用examine命令(簡寫是x)來檢視記憶體位址中的值。x命令的語法如下所示:

x/n、f、u是可選的引數。

n 是乙個正整數,表示顯示記憶體的長度,也就是說從當前位址向後顯示幾個位址的內容。

f 表示顯示的格式,參見上面。如果位址所指的是字串,那麼格式可以是s,如果地十是指令位址,那麼格式可以是i。

u 表示從當前位址往後請求的位元組數,如果不指定的話,gdb預設是4個bytes。u引數可以用下面的字元來代替,b表示單位元組,h表示雙位元組,w表示四字 節,g表示八字節。當我們指定了位元組長度後,gdb會從指記憶體定的記憶體位址開始,讀寫指定位元組,並把其當作乙個值取出來。

表示乙個記憶體位址。

n/f/u三個引數可以一起使用。例如:

命令:x/3uh 0x54320 表示,從記憶體位址0x54320讀取內容,h表示以雙位元組為乙個單位,3表示輸出三個單位,u表示按十六進製制顯示。

輸出格式

一般來說,gdb會根據變數的型別輸出變數的值。但你也可以自定義gdb的輸出的格式。例如,你想輸出乙個整數的十六進製制,或是二進位制來檢視這個整型變數的中的位的情況。要做到這樣,你可以使用gdb的資料顯示格式:

x 按十六進製制格式顯示變數。

d 按十進位制格式顯示變數。

u 按十六進製制格式顯示無符號整型。

o 按八進位制格式顯示變數。

t 按二進位制格式顯示變數。

a 按十六進製制格式顯示變數。

c 按字元格式顯示變數。

f 按浮點數格式顯示變數。

(gdb) p record

$10 =

(gdb) p &record

$11 = (int (*)[10]) 0x8049740

(gdb) x/4uw 0x8049740

0x8049740 :    12    76    48    62

(gdb) x/6ow 0x8049740

0x8049740 :    014    0114    060    076

0x8049750 :    0136    021

copy from:

GDB下檢視記憶體命令 x命令

可以使用examine命令 簡寫是x 來檢視記憶體位址中的值。x命令的語法如下所示 x n f u是可選的引數。n是乙個正整數,表示需要顯示的記憶體單元的個數 f x 按十六進製制格式顯示變數。d 按十進位制格式顯示變數。u 按十六進製制格式顯示無符號整型。o 按八進位制格式顯示變數。t 按二進位制...

gdb檢視記憶體區命令

用gdb檢視記憶體 格式 x nfu 說明 x 是 examine 的縮寫 n表示要顯示的記憶體單元的個數 f表示顯示方式,可取如下值 x 按十六進製制格式顯示變數。d 按十進位制格式顯示變數。u 按十進位制格式顯示無符號整型。o 按八進位制格式顯示變數。t 按二進位制格式顯示變數。a 按十六進製制...

gdb檢視記憶體區命令

用gdb檢視記憶體 格式 x nfu 說明 x 是 examine 的縮寫 n表示要顯示的記憶體單元的個數 f表示顯示方式,可取如下值 x 按十六進製制格式顯示變數。d 按十進位制格式顯示變數。u 按十進位制格式顯示無符號整型。o 按八進位制格式顯示變數。t 按二進位制格式顯示變數。a 按十六進製制...