1 历史记录
当用 GDB 的 print 查看程序运行时的数据时,每一个 print 都会被 GDB记录下来。GDB 会以$1, $2, $3 .....这样的方式为每一个 print 命令编上号。于是,可以使用这个编号访问以前的表达式,如$1。这个功能所带来的好处是,如果先前输入了一个比较长的表达式,如果还想查看这个表达式的值,可以使用历史记录来访问,省去了重复输入。
2 环境变量
可以在 GDB 的调试环境中定义自己的变量,用来保存一些调试程序中的运行数据。要定义一个 GDB 的变量很简单只需。使用 GDB 的 set 命令。GDB的环境变量和 UNIX 一样,也是以$起头。如:set $foo = *object_ptr 使用环境变量时,GDB 会在你第一次使用时创建这个变量,而在以后的使用中,则直接对其賦值。环境变量没有类型,你可以给环境变量定义任一的类型。包括结构体和数组。
show convenience
该命令查看当前所设置的所有的环境变量。
这是一个比较强大的功能,环境变量和程序变量的交互使用,将使得程序调试更为灵活便捷。例如:
set $i = 0
print bar[$i++]->contents
于是,当你就不必,print bar[0]->contents, print bar[1]->contents 地输入命令了。输入这样的命令后,只用敲回车,重复执行上一条语句,环境变量会自动累加,从而完成逐个输出的功能。