Chinaunix首页 | 论坛 | 博客
  • 博客访问: 83335
  • 博文数量: 9
  • 博客积分: 187
  • 博客等级: 入伍新兵
  • 技术积分: 121
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-06 22:38
个人简介

网络设备制造商硬件打杂店小二

文章分类

全部博文(9)

文章存档

2016年(2)

2012年(1)

2011年(6)

我的朋友

分类: C/C++

2011-08-14 23:20:03

    今天仔细看了一下gdb的介绍,发现它的调试功能实在是太强大了。VC++在它面前必将羞愧不已。
  
    比较imba的功能列举如下:
    1、break *address   
       在程序运行的内存地址处停住。  
    2、break ... if  
       condition表示条件,在条件成立时停住。比如在循环体中,可以设置break if i=100,表示当i为100时停住程序。
      
    除了断点之外,gdb还能设置观察点和捕捉点。
   
    观察点一般来观察某个表达式(变量也是一种表达式)的值是否有变化了,如果有变化,马上停住程序。
    1、watch
      为表达式(变量)expr设置一个观察点。一表达式值有变化时,马上停住程序。
    2、rwatch
      当表达式(变量)expr被读时,停住程序。
    3、awatch
      当表达式(变量)的值被读或被写时,停住程序。

    gdb可以设置捕捉点来捕捉程序运行时的一些事件。如:载入共享库(动态链接库)或是C++的异常。
   
    设置捕捉点的格式为:
    * catch
    当event发生时,停住程序。event可以是下面的内容:
   1. throw 一个C++抛出的异常。(throw为关键字)
   2. catch 一个C++捕捉到的异常。(catch为关键字)
   3. exec 调用系统调用exec时。(exec为关键字,目前此功能只在HP-UX下有用)
   4. fork 调用系统调用fork时。(fork为关键字,目前此功能只在HP-UX下有用)
   5. vfork 调用系统调用vfork时。(vfork为关键字,目前此功能只在HP-UX下有用)
   6. load 或 load 载入共享库(动态链接库)时。(load为关键字,目前此功能只在HP-UX下有用)
   7. unload 或 unload 卸载共享库(动态链接库)时。(unload为关键字,目前此功能只在HP-UX下有用)

   看来命令行调试工具不仅丝毫不逊色于图形化调试工具,反而在某些方面更加强大。

           

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