用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(unsigneddecimal),
t(binary), f(float), a(address), i(instruction), c(char) ands(string).
size letters are b(byte), h(halfword), w(word), g(giant, 8bytes)
舉例x/3uh buf
表示從記憶體位址buf讀取內容,
h表示以雙位元組為乙個單位,
3表示三個單位,
u表示按十六進製制顯示
詳細例子:
(gdb) list
1 #include
2 int main()
3 {
45 //char a[1];
6 //a[0]='a';
7 unsigned long long md5=14126471717450151013;
89 //printf("%d/n",a[0]);
10 return 0;
(gdb) break 10
breakpoint 1 at 0x8048372: file test.c, line 10.
(gdb) run
starting program:/data/compiler/g_platform/bradenwu/md5/test.out
breakpoint 1, main () at test.c:10
10 return 0;
(gdb) x/8xb md5
0x8837f465: cannot access memory at address 0x8837f465
(gdb) x/8xb &md5
0xbfffefa0: 0x65 0xf4 0x37 0x88 0x2e 0x4f 0x0b 0xc4
printf中的x 及用法
printf 和 scanf 簡介 printf 將變數的內容輸出到顯示器上 四種用法 1.printf 字串 n 2.printf 輸出控制符 輸出引數 3.printf 輸出控制符1 輸出控制符2 輸出引數1,輸出引數2,輸出控制符和輸出引數的個數必須一一對應。4.printf 輸出控制符 輸出...
GDB的基本用法
本文參考 debug hacks 一書所作 每天進步一點點。一.準備 通過 gcc 的 g 選項生成除錯資訊。gcc wall o2 g 原始檔 g選項可以使用僅可gdb使用的一些附加除錯資訊 這些附加資訊可以使gdb工作的更好,但是也可能令其他偵錯程式崩潰或者不能讀該檔案。二.gdb基本用法 啟動...
GDB 基本用法
在原來的的選項上再加上 g 選項,如 gcc g wall o2 o test test.c 或者 gcc g o test test.c。有一點需要注意的是除錯時最好去掉優化選項,比如內聯 inline 函式 優化 去掉函式呼叫,而將函式 在呼叫的位置展開 該函式名上就無法設定斷點。這是因為內聯函...