gdb中看記憶體(x命令)

來源:互聯網
上載者:User

轉自:http://mooncome.blog.hexun.com/13684978_d.html


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

x/<n/f/u> <addr>

n、f、u是可選的參數。

n是一個正整數,表示顯示記憶體的長度,也就是說從當前地址向後顯示幾個地址的內容。
f 表示顯示的格式,參見上面。如果地址所指的是字串,那麼格式可以是s,如果 地址是指令地址,那麼格式可以是i
u 表示從當前地址往後請求的位元組數,如果不指定的話,GDB預設是4個bytes。u參數可以用下面的字元來代替,b表示單位元組,h表示雙位元組,w表示四字 節,g表示八位元組。當我們指定了位元組長度後,GDB會從指記憶體定的記憶體位址開始,讀寫指定位元組,並把其當作一個值取出來。

<addr>表示一個記憶體位址。
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

====================================


【yasi】


1)用x命令查看記憶體

x/3uh 0x54320從地址0x54320開始,讀取3個雙位元組(h),以十六進位方式顯示(u

3可以替換成任意正整數

u可以替換成:

d 按十進位格式顯示變數
x 按十六進位格式顯示變數
a 按十六進位格式顯示變數
u 按十六進位格式顯示無符號整型
o 按八進位格式顯示變數
t 按二進位格式顯示變數
c 按字元格式設定顯示變數
f 按浮點數格式顯示變數

h可以替換成:

b表示單位元組,h表示雙位元組,w表示四字 節,g表示八位元組


2)p命令中加參數以不同形式列印變數的值

(gdb)p/a i    或    (gdb)p/x i
$22 = 0x65

(gdb)p/c i
$23 = 101 'e'

(gdb)p/f i
$24 = 1.41531145e-43

(gdb)p/t i
$26 = 1100101

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.