C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  117 Posts :: 2 Stories :: 61 Comments :: 0 Trackbacks

常用链接

留言簿(8)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

      TRACE()的作用是在Output中输出调试信息。(这是书上的话,有点没看懂)

      我网上搜索了一下,有的是这么说的:

      “TRACE宏对于VC下程序调试来说是很有用的东西,有着类似printf的功能;该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调式也在RELEASE的时候减少代码量。

  使用非常简单,格式如下:

  TRACE("DDDDDDDDDDD");

  TRACE("wewe%d",333);

  同样还存在TRACE0,TRACE1,TRACE2。。。分别对应0,1,2。。个参数

      TRACE信息输出到VC IDE环境的输出窗口(该窗口是你编译项目出错提示的哪个窗口),但仅限于你在VC中运行你的DEBUG版本的程序。”

      觉得这个解释是比较不错,容易看懂的。

      同时,搜到一个东西,也没看懂,但觉得挺好的,说不定以后会用到,就贴这了。

      最近在做一个小工程,由于中间的算法比较繁琐,也非常杂乱,哪一个环节出了差错,全盘皆乱,特别希望在需要的地方输出一个监视值,以监视中间的算法执行情况,首先想到了设断点调试,但是每次都是在不断中断程序的情况下,非常不方便,试了一下TRACE,但是也必须在DEBUG调试模式下进行,感觉非常痛苦。偶一日,翻看候sir的深入浅出MFC,在附录里提供了一个以MFC重建DBWIN的详细解说,顿时欣喜若狂,仔细研读,里面提供了很多方法,但是我还是喜欢DBWIN这个工具,God,真是救我于水火阿,DBWIN这个程序已经给我们提供了,就在MSDN中,可以轻松获得,呵呵,这个可是鼎鼎大名的Paul DiLascia做出来的,不用怀疑它的功能,但是每次要使用这个工具的时候都必须修改源代码,确实比较麻烦,而且,还要注意调用初始化程序的位置,觉得有点不爽,稍微看了一下要求包含的一个头文件,和所要调用的初始化程序,心里盘算着能不能在生成DEBUG程序的情况下自己添加呢,初始化必须最先调用,对,构造一个全局对象,于是自己写了一个类,把初始化程序放在全局对象的构造函数中,源程序如下:

//MyTrace.h
#ifndef __MYTRACE_H__
#define __MYTRACE_H__
#ifdef _DEBUG
#include
<tracewin.h>
class MyTrace
{
       
public:
       MyTrace()
       
{
              ::MfxTraceInit();
       }

       
~MyTrace(){}
}
;
MyTrace _mytrace;
#endif //_DEBUG
#endif //__MYRTACE_H__

      把这个文件和<tracewin.h>这两个文件放在了默认包含目录下,如果要使用DBWIN的时候只要把mytrace.h这个文件包含在你的程序里面就行了,最好是包含在构建theApp的那个文件中,这样可以监视你程序中想要监视的所有过程,哇,确实方便了许多。打开DBWIN窗口,你所加入的TRACE字符串清清楚楚的出现在监视窗口,你甚至不用开VC环境,自己运行你所生成的DEBUG程序,这样如果你要同时调试几个程序,如关系到程序间的通讯的,非常方便,看得也非常痛快。

      但是每次还要包含一个头文件,还是有点麻烦,可否把这个文件内嵌到AfxWin的头文件中呢,因为要编写MFC程序,这个头文件是必须包含的,赶紧try一下,不对,出现错误了,好像是出现重复定义,但是这个头文件已经使用预编译指令保证了不出现重复定义了阿,查看有关资料关于这个连接错误,哦,好像是由于VC的一些关系引起的,但是努力了好长时间还是没法解决,贴出这篇文章想请教各位大虾,也许你们对于TRACE有更好的方法,望赐教,对于我所出现的错误你们有更好的解决方法,也望告知,感激不尽。这里留下我的Mail,dyroro@163.com

posted on 2010-01-29 19:57 烟皑 阅读(3232) 评论(0)  编辑 收藏 引用 所属分类: 《Visual C++代码参考与技巧大全》学习笔记

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理