用gdb檢視記憶體

2021-06-26 06:36:53 字數 1205 閱讀 9758

用gdb檢視記憶體

格式: x /nfu 說明

x 是 examine 的縮寫

n表示要顯示的記憶體單元的個數

f表示顯示方式, 可取如下值

x 按十六進製制格式顯示變數。

d 按十進位制格式顯示變數。

u 按十進位制格式顯示無符號整型。

o 按八進位制格式顯示變數。

t 按二進位制格式顯示變數。

a 按十六進製制格式顯示變數。

i 指令位址格式

c 按字元格式顯示變數。

f 按浮點數格式顯示變數。

u表示乙個位址單元的長度

b表示單位元組,

h表示雙位元組,

w表示四位元組,

g表示八字節

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) 舉例

x/3uh buf 

表示從記憶體位址buf讀取內容,

h表示以雙位元組為乙個單位,

3表示三個單位,

u表示按十六進製制顯示

例子:n是個區域性變數

breakpoint 1, main (argc=1, argv=0xbffff3a4) at calc.c:7

7        int n = atoi(argv[1]);

(gdb) print &n

$1 = (int *) 0xbffff2ec

(gdb) x 0xbffff2ec

0xbffff2ec:    0x00282ff4

(gdb) print * (int *) 0xbffff2ec

$2 = 2633716

(gdb) x /4xw 0xbffff2ec

0xbffff2ec:    0x00282ff4    0x080484e0    0x00000000    0xbffff378

(gdb) x /4dw 0xbffff2ec

0xbffff2ec:    2633716    134513888    0    -1073745032

(gdb)

用gdb檢視記憶體

格式 x nfu 引數說明 x 是 examine 的縮寫 n表示要顯示的記憶體單元的個數 f表示顯示方式,可取如下值 x 按十六進製制格式顯示變數。d 按十進位制格式顯示變數。u 按十進位制格式顯示無符號整型。o 按八進位制格式顯示變數。t 按二進位制格式顯示變數。a 按十六進製制格式顯示變數。i...

gdb檢視記憶體

格式 x nfu 說明 x 是 examine 的縮寫 n表示要顯示的記憶體單元的個數 f表示顯示方式,可取如下值 x 按十六進製制格式顯示變數。d 按十進位制格式顯示變數。u 按十進位制格式顯示無符號整型。o 按八進位制格式顯示變數。t 按二進位制格式顯示變數。a 按十六進製制格式顯示變數。i 指...

gdb 檢視記憶體

曾經被電面到乙個題目,如何判斷乙個系統是大端還是小端,方法其實很簡單 int main 在linux 的執行結果 gcc test.c a.out echo 120120 即 0x78,證明低位放在了低位址,所以是小端系統 little endian 這樣說可能不夠直觀,而且記憶體中怎麼分布本來就比...