快速业务通道

Linux下编程工具的使用(5) - GDB调试工具(2)

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-30
查看对象选项的设置.
set print static-members <on/off> 表示当显示一个C 对象中的内容是,是否显示其中的静态数据成员.默认是on.
show print static-members 查看静态数据成员选项设置.
set print vtbl <on/off> 当此选项打开时,GDB将用比较规整的格式来显示虚函数表时.其默认是关闭的.
show print vtbl 查看虚函数显示格式的选项.

八、历史记录

当你用GDB的print查看程序运行时的数据时,你每一个print都会被GDB记录下来.GDB会以$1, $2, $3 .....这样的方式为你每一个print命令编上号.于是,你可以使用这个编号访问以前的表达式,如$1.这个功能所带来的好处是,如果你先前输入了一个比较长的表达式,如果你还想查看这个表达式的值,你可以使用历史记录来访问,省去了重复输入.

九、GDB环境变量

你可以在GDB的调试环境中定义自己的变量,用来保存一些调试程序中的运行数据.要定义一个GDB的变量很简单只需.使用GDB的set命令.GDB的环境变量和UNIX一样,也是以$起头.如:
set $foo = *object_ptr 使用环境变量时,GDB会在你第一次使用时创建这个变量,而在以后的使用中,则直接对其賦值.环境变量没有类型,你可以给环境变量定义任一的类型.包括结构体和数组.
show convenience 该命令查看当前所设置的所有的环境变量.

这是一个比较强大的功能,环境变量和程序变量的交互使用,将程序调试更为灵活便捷.例如:
set $i = 0
print bar[$i ]->contents
Empire CMS,phome.net


于是,当你就不必,print bar[0]->contents, print bar[1]->contents地输入命令了.输入这样的命令后,只用敲回车,重复执行上一条语句,环境变量会自动累加,从而完成逐个输出的功能.

十、查看寄存器

要查看寄存器的值,很简单,可以使用如下命令:
info registers 查看寄存器的情况.(除了浮点寄存器)
info all-registers 查看所有寄存器的情况.(包括浮点寄存器)
info registers <regname ...> 查看所指定的寄存器的情况.

寄存器中放置了程序运行时的数据,比如程序当前运行的指令地址(ip),程序的当前堆栈地址(sp)等等.你同样可以使用print命令来访问寄存器的情况,只需要在寄存器名字前加一个$符号就可以了.如:p $eip. 程序执行顺序
一旦使用GDB挂上被调试程序,当程序运行起来后,你可以根据自己的调试思路来动态地在GDB中更改当前被调试程序的运行线路或是其变量的值,这个强大的功能能够让你更好的调试你的程序,比如,你可以在程序的一次运行中走遍程序的所有分支.

一、修改变量值

修改被调试程序运行时的变量值,在GDB中很容易实现,使用GDB的print命令即可完成.如:
(gdb) print x=4
x=4这个表达式是C/C 的语法,意为把变量x的值修改为4,如果你当前调试的语言是Pascal,那么你可以使用Pascal的语法:x:=4.
在某些时候,很有可能你的变量和GDB中的参数冲突,如:
(gdb) whatis width
type = double
(gdb) p width
Empire CMS,phome.net

$4 = 13
(gdb) set width=47
Invalid syntax in expression.

,set width是GDB的命令,,出现了“Invalid syntax in expression”的设置错误,此时,你可以使用set var命令来告诉GDB,width不是你GDB的参数,而是程序的变量名,如:
(gdb) set var width=47
另外,还可能有些情况,GDB并不报告这种错误,保险起见,在你改变程序变量取值时,最好都使用set var格式的GDB命令.

二、跳转执行

一般来说,被调试程序会按照程序代

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号