用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 命令)記憶體
- [20241021]使用gdb檢視修改記憶體地址以及相關值.txt記憶體
- gdb golang 檢視iface 內部結構Golang
- golang的記憶體相關內容Golang記憶體
- PostgreSQL共享記憶體裡的內容(initCommunication)SQL記憶體
- Python記憶體檢視是什麼Python記憶體
- 如何檢視linux系統中空閒記憶體/實體記憶體使用/剩餘記憶體Linux記憶體
- 如何檢視MySQL資料庫佔多大記憶體,佔用太多記憶體怎麼辦?MySql資料庫記憶體
- gdb 檢視 jsoncpp物件JSON物件
- win10如何查詢哪些應用記憶體佔用大 win10如何檢視軟體記憶體佔用Win10記憶體
- 檢視LINUX程式記憶體佔用情況Linux記憶體
- [20190104]ipcs檢視共享記憶體段.txt記憶體
- java中如何檢視記憶體洩露Java記憶體洩露
- git檢視檔案內容Git
- 17 種檢視 Linux 實體記憶體的方法Linux記憶體
- 如何檢視Linux的記憶體使用狀況Linux記憶體
- 記憶體二三事: Xcode 記憶體圖、Instruments 視覺化檢測迴圈引用記憶體XCode視覺化
- win10如何檢視記憶體執行頻率_win10檢視記憶體執行頻率的方法Win10記憶體
- 檢視谷歌seo內容外掛谷歌
- win10檢視是否使用虛擬記憶體情況 win10是否使用虛擬記憶體在哪裡檢視Win10記憶體
- 檢視Redis叢集所有節點記憶體工具Redis記憶體
- Linux/Centos檢視程式佔用記憶體大小的幾種方法總結LinuxCentOS記憶體
- 檢視PHP-FPM的記憶體佔用、程序個數等資訊PHP記憶體
- Linux 檢視檔案內容——bat 命令LinuxBAT
- Centos環境自寫指令碼檢視使用php或nginx佔用記憶體CentOS指令碼PHPNginx記憶體
- Linux(CentOS) 檢視當前佔用CPU或記憶體最多的K個程式LinuxCentOS記憶體
- Linux 檢視記憶體使用情況的幾種方法Linux記憶體
- AIX詳細檢視使用者/程式使用記憶體AI記憶體
- 使用show engine innodb status 檢視記憶體使用情況記憶體
- 小米9 SE記憶體是多少?小米9 SE手機記憶體的檢視方法步驟記憶體
- 記憶體檢查指令碼記憶體指令碼
- git檢視指定提交檔案的內容Git
- [20231012]如何檢視unicode編碼內容.txtUnicode
- Linux檔案內容檢視相關命令Linux
- win10系統檢視哪個軟體佔用記憶體最大的圖文教程Win10記憶體
- Linux基楚操作指引【檢視版本、檢視路徑、檢視內容、編輯檔案】Linux
- 怎麼看記憶體條頻率是多少 電腦檢視記憶體頻率方法介紹記憶體
- ICML 2024 | 梯度檢查點太慢?不降速、省視訊記憶體,LowMemoryBP大幅提升反向傳播視訊記憶體效率梯度記憶體反向傳播
- 【MEMORY】Oracle記憶體結構資源常用檢視及sqlOracle記憶體SQL