日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GDB下查看内存命令(x命令)

發布時間:2023/12/2 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GDB下查看内存命令(x命令) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

可以使用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

總結

以上是生活随笔為你收集整理的GDB下查看内存命令(x命令)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。