利用afxDump 来调试自己的程序

在开发调试过程中,我们往往要想知道一些变量的当前值,简单的变量可以用TRACE语句在调试窗口中打印出来:

TRACE(" this height :%d",height);

但是如果遇到比较复杂的值,如CRect, CRgn 等,如果要把它的值都打印出来,那是相当的麻烦:

TRACE(" this left :%d right % top % bottom %d \n",rect.left,rect.right,rect.top,rect.bottom);

如果程序很多地方都要这么做,岂不郁闷死,

还好,vc的开发者已经想到了这个问题,特地提供了一个宏:afxDump来简化这个工作,相对前面那个例子,现在可以这样写:

afxDump << rect << "\n";

这样你就美哉了吧!但是使用不久你就发现还是有不方便的地方:

1, 在release 下 新加的代码编译不了。

2, 每一次都要在后面补上 << "\n"  ;这样的语句,不然它打印字串不会自动换行。

现在vs不会再给我们提供进一步的帮助,只能自己想办法;经过不停的摸索,终于找到一个办法,如下:

 

CDumpContext  debugPrintObj;

#ifdef _DEBUG
#define debugPrint(a)  \
	    debugPrintObj << a << "\n";
#else
#define debugPrint(a) 
#endif


自己定义一个CDumpContext对象 debugPrintObj;

再定义一个宏debugPrint(a)如上,相对上面的例子可以这样使用:

debugPrint(rect);

 

这样就完满的解决了这个问题!

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值