Linux环境下的C/C++基础调试技术3――查看数据(二)

2014-11-24 12:59:16 · 作者: · 浏览: 1
0, right = 0x0}
(gdb) p *$1
$3 = {val = 5, left = 0x0, right = 0x0}

(gdb) p tmp->left
$1 = (struct node *) 0x80496a8
(gdb) p *$
$2 = {val = 5, left = 0x0, right = 0x0}

5.修改被调试程序运行时的变量值:set x = 12。

6.利用自定义变量方便调试:例如,

1: int w[4] = {12,5,8,29};

2: main()

3: {

4: w[2] = 88;

5: }
我们设置i,然后利用这个变量对这个数组进行遍历:

(gdb) set $i = 0
(gdb) p w[$i++]
$1=12
(gdb)
$2=5
(gdb)
$3=88
(gdb)
$4=29

7.强制类型打印

p {type}address:把address指定的内存解释为type类型(类似于强制转型,更加强)

8.设置一些常见选项

1) set print array:打开数组显示,打开后当数组显示时,每个元素占一行,如果不打开的话,每个元素则以逗号分隔。默认关闭
2) set print elements num-of-elements:设置GDB打印数据时显示元素的个数,缺省为200,设为0表示不限制(unlimited)
3) set print null-stop:设置GDB打印字符数组的时候,遇到NULL时停止,缺省是关闭的
4) set print pretty:设置GDB打印结构的时候,每行一个成员,并且有相应的缩进,缺省是关闭的
5) set print object:设置GDB打印多态类型的时候,打印实际的类型,缺省为关闭 <