2 检查和设置变量

1.GDB中常用print,display命令输出变量的值。同时GDB和GUI(DDD)都提供了强大的检查变量和数据结构的方式。如二叉树
给定一个二叉树节点如下:

    struct node
    {
        int val;
        struct node *left;
        struct node *right
    };
    typedef struct node *nsp;

输出二叉树节点完整结构:p *node_pointer
这里写图片描述

2.GDB的display命令
  如果每次遇到断点时都需要键入命令print打印,也比较麻烦,此时可使用display(简写为disp);  
  这个命令要求GDB在每次执行中有暂停时就输出指定条目。第一次在dispoint-n执行disp *tmp后,以后每次到达此断点时会自动执行,重新run后依然有效。
  其他相关命令:
  1) info disp ,
  2)dis disp disp_num,
  3)enable dis dis_num ,
  4)undisp disp_num //完全删除

3.改进三:使用GDB的commands命令
可以通过设置断点命令列表,在断点处自动完成需要的功能;

4.改进四:使用GDB的call命令
假设源程序中有一个函数print_tree(),用于打印树,此时可通过GDB的call命令直接调用此函数:

(gdb)command 2(break_point)
> printf “******current tree***“*
> call print_tree(root)
> end


5.检查动态数组
(1)打印整数数组 int arr[25]:
(gdb) p arr
(2)打印动态数组 int arr; arr=(int *) malloc(25*sizeof(int));
打印格式为:p *pointer@number_of_element
(gdb) p *arr@25
当main()中引入参数argc, argv时,可执行如下命令答应,程序名和参数:
(gdb) p *argv@argc
若是:
(gdb) p *arr
则只打印arr[0];

直接检查内存
GDB中常见的检查内存的命令为x:
用法:x/FMT ADDRESS
在DDD中,选择Data->Memory;

print和dispaly的高级选项
(gdb) p/x y
/x: 以十六进制格式显示变量y;
其他格式:c(character), s(string), f(floating-point)

6. ptype node
ptype命令可以很方便的快速浏览类或节点的结构,注意C,C++在确定符号时的差别。

7.监视局部变量:info locals
在GDB中,可通过info locals命令得到当前帧中的所有局部变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值