gdb查看記憶體

來源:互聯網
上載者:User

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

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

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

n是一個正整數,表示需要顯示的記憶體單元的個數, 也就是說從當前地址向後顯示幾個 記憶體單元的內容,一個記憶體單元的大小由後面的u定義。

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

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

<addr>表示一個記憶體位址。

注意:嚴格區分n 和u的關係,n表示單元個數,u表示每個單元的大小。


n/f/u三個參數可以一起使用。例如:
命令:x/3uh 0x54320 表示,從記憶體位址0x54320讀取內容,h表示以雙位元組為一個單位,3表示輸出三個單位,u表示按十六進位顯示。

輸出格式
一般來說,GDB會根據變數的類型輸出變數的值。但你也可以自訂GDB的輸出的格式。例如,你想輸出一個整數的十六進位,或是二進位來查看這個整型變數 的中的位的情況。要做到這樣,你可以使用GDB的資料顯示格式:

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

(gdb) help x
Examine memory: x/FMT ADDRESS.
ADDRESS is an expression for the memory address to examine.
FMT is a repeat count followed by a format letter and a size letter.
Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),
t(binary), f(float), a(address), i(instruction), c(char) and s(string).
Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).
The specified number of objects of the specified size are printed
according to the format.

Defaults for format and size letters are those previously used.
Default count is 1. Default address is following last thing printed
with this command or "print".
(gdb) p f1
$4 = 8.25
(gdb) p f2
$5 = 125.5
(gdb) x/x &f1
0xbffff380:    0x41040000
(gdb) x/xw &f1
0xbffff380:    0x41040000
(gdb) x/xw &f2
0xbffff384:    0x42fb0000
(gdb) x/2xw &f1
0xbffff380:    0x41040000    0x42fb0000
(gdb) x/4xw &f1
0xbffff380:    0x41040000    0x42fb0000    0xbffff408    0x00bcba66
(gdb) x/tw &f1
0xbffff380:    01000001000001000000000000000000
(gdb) x/2tw &f1
0xbffff380:    01000001000001000000000000000000    01000010111110110000000000000000
(gdb) p record
$10 = {12, 76, 48, 62, 94, 17, 32, 37, 52, 69}
(gdb) p &record
$11 = (int (*)[10]) 0x8049740
(gdb) x/4uw 0x8049740
0x8049740 <record>:    12    76    48    62
(gdb) x/6ow 0x8049740
0x8049740 <record>:    014    0114    060    076
0x8049750 <record+16>:    0136    021

 

zz http://blog.csdn.net/r91987/archive/2010/03/31/5435327.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.