最近在做一个小工程,由于中间的算法比较繁琐,也非常杂乱,哪一个环节出了差错,全盘皆乱,特别希望在需要的地方输出一个监视值,以监视中间的算法执行情况,首先想到了设断点调试,但是每次都是在不断中断程序的情况下,非常不方便,试了一下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