Chinaunix首页 | 论坛 | 博客
  • 博客访问: 408871
  • 博文数量: 47
  • 博客积分: 1488
  • 博客等级: 上尉
  • 技术积分: 729
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-15 11:35
文章分类

全部博文(47)

文章存档

2012年(4)

2011年(22)

2010年(21)

分类: LINUX

2010-11-26 10:57:53

查看运行时数据
1. print 命令
 
打印变量值
 

usage: print [/f] <expression>

# /f 是指明输出格式,与c语言的格式符类似,具体可查看帮助
# 在表达式中,gdb支持"::,@ "操作符
#:: 为全局作用域符
#@ 连续内存操作符
#{type} <addr> 内存类型操作符

(gdb) p i #查看本地变量i的值

(gdb) p ::i #查看全局变量i的值

(gdb) p "file.c"::i #查看文件file.c中的全局变量i的值(static)

(gdb) p *arr@6 #假设声明 int arr[3], 该命令输出 {65,66,67}

(gdb) p arr@6 #这跟前面的命令不同,它打印 {{65,66,67},{6972112, -1080405392, -1080405304}, # {7122412, 7019680, 134514032}},明显不是想要的

(gdb) p {char} &arr[0] # 把地址 &arr[0]的数据按char显示,该例子中会打印 'A'

(gdb) p /c arr[0] # 与上一命令等价,打印 'A'

2. examine 命令

查看内存内容

usage: x /[nfu] <addr>
# n,f,u 是可选参数,意义如下:

# n - 要查看的内存单元数目

# f - 查看格式,支持print命令中的格式,同时支持/s (字符串),/i (指令内存)

# u - 一个内存单元的大小,默认为4字节. b,h,w,g 分别表示1,2,4,8个字节

(gdb) x /3uh 0x12345678 #从地址 0x12345678 读取三个单元的数值,每个单元为双字节

(gdb) x /i $pc   #查看当前指令, $pc为gdb的环境变量,表示当前指令的地址

3. display 相关命令

自动显示变量值,通常用作设置在程序停住时查看某些变量的值

usage:display <expr>
       display /f <expr>
       display /f <addr>
usage:info display #查看设置的自动显示,每一个都有一个编号

usage: undisplay <N>
       delete display <N> #删除编号为 N 的自动显示, 多个可以用空格格开

usage:disable display <N> # 禁用, 不删除

       enable display <N> # 启用
# f - 同 x 命令的格式


4. info all-registers命令

查看寄存器的内容

usage: info all-registers #查看所有寄存器的内容

usage: info registers #查看除浮点寄存外的寄存器

        info registers <reg-name> #查看指定名字的寄存器


阅读(4652) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~