GDB 调试工具高级用法

http://blog.jobbole.com/107759/

上边是翻译的文章

用GDB查看内存

格式: x /nfu <addr>

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
#include
<stdio.h> int main() {   char a[1];   a[0]='a';   unsigned long long md5=14126471717450151013;   printf("%d/n",a[0]);   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

猜你喜欢

转载自www.cnblogs.com/wintrysec/p/10485016.html