用GDB檢視記憶體內容
你可以使用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 i
$21 = 101
(gdb) p/a i
$22 = 0x65
(gdb) p/c i
$23 = 101 'e'
(gdb) p/f i
$24 = 1.41531145e-43
(gdb) p/x i
$25 = 0x65
(gdb) p/t i
$26 = 1100101[@more@]
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 i
$21 = 101
(gdb) p/a i
$22 = 0x65
(gdb) p/c i
$23 = 101 'e'
(gdb) p/f i
$24 = 1.41531145e-43
(gdb) p/x i
$25 = 0x65
(gdb) p/t i
$26 = 1100101[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7406370/viewspace-968534/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GDB檢視記憶體(x 命令)記憶體
- 很經典的GDB除錯命令,包括檢視變數,檢視記憶體除錯變數記憶體
- 檢視swap記憶體記憶體
- gdb golang 檢視iface 內部結構Golang
- golang的記憶體相關內容Golang記憶體
- 檢視linux可用記憶體Linux記憶體
- SUSE檢視CPU和記憶體記憶體
- Linux檢視記憶體資訊Linux記憶體
- [20241021]使用gdb檢視修改記憶體地址以及相關值.txt記憶體
- Linux檢視佔用記憶體的程式指令碼Linux記憶體指令碼
- adbshelldumpsys命令檢視記憶體記憶體
- UNIX系統記憶體檢視方法記憶體
- Aix下檢視記憶體命令 -- 轉AI記憶體
- SOLARISE檢視記憶體使用情況記憶體
- 如何檢視MySQL資料庫佔多大記憶體,佔用太多記憶體怎麼辦?MySql資料庫記憶體
- PostgreSQL共享記憶體裡的內容(initCommunication)SQL記憶體
- 如何檢視linux系統中空閒記憶體/實體記憶體使用/剩餘記憶體Linux記憶體
- git檢視檔案內容Git
- 檢視控制檔案內容
- win10如何查詢哪些應用記憶體佔用大 win10如何檢視軟體記憶體佔用Win10記憶體
- Python記憶體檢視是什麼Python記憶體
- java中如何檢視記憶體洩露Java記憶體洩露
- linux檢視cpu、記憶體、版本資訊Linux記憶體
- Oracle 記憶體使用建議效能檢視Oracle記憶體
- 檢視程式cpu和記憶體佔用率記憶體
- Linux下檢視記憶體,CPU資訊Linux記憶體
- linux aix檢視CPU和記憶體LinuxAI記憶體
- gdb 檢視 jsoncpp物件JSON物件
- 檢視谷歌seo內容外掛谷歌
- 如何在windows程式中讀取bios內容(實體記憶體內容) (5千字)WindowsiOS記憶體
- 檢視LINUX程式記憶體佔用情況Linux記憶體
- linux下檢視CPU、記憶體、硬碟方法Linux記憶體硬碟
- linux下檢視記憶體使用情況Linux記憶體
- HP-UX環境下檢視記憶體UX記憶體
- 檢視主機的記憶體使用情 (轉)記憶體
- aix 檢視記憶體_cpu_序列號碼AI記憶體
- 在linux檢視記憶體的大小(轉)Linux記憶體
- 17 種檢視 Linux 實體記憶體的方法Linux記憶體