65.9K
CodeProject 正在变化。 阅读更多。
Home

抑制 TRACE 调用

2005年7月12日

viewsIcon

31986

如何防止 TRACE 调用出现在输出窗口。

引言

必要性:先前编写的代码中存在大量、不必要或过多的 TRACE 调用,干扰了调试过程。

工作原理

控制 TRACE 调用的变量是 afxTraceEnabled。它定义在文件 C:\Program Files\Microsoft Visual Studio\VC98\MFC\Include\AFX.H 中(Visual C++ 6.0 的默认安装路径)。

afxTraceEnabled 标志是全局的,因此它会影响所有 TRACE 调用。

#include "StdAfx.h"
#include "MyClass.h"
#ifdef _DEBUG
__declspec(dllimport) extern BOOL afxTraceEnabled;
#endif
CMyClass::CMyClass()
{
#ifdef _DEBUG
  afxTraceEnabled = FALSE;
#endif
}

就是这样。这里,TRACE 调用被抑制,只剩下 OutputDebugString 调用。可以根据需要随时设置/取消设置该变量,以允许或禁用某些部分的 TRACE 调用,但是应该通过修改受影响所有文件的源代码来完成。

另一种方法是在单独的文件中实现标志的启用/禁用。调用两个函数,比如 __EnableTrace__DisableTrace,可以允许在单个位置控制实现,并且其他文件的源代码可以在需要时调用这些函数。

© . All rights reserved.