抑制 TRACE 调用






2.66/5 (9投票s)
2005年7月12日

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
,可以允许在单个位置控制实现,并且其他文件的源代码可以在需要时调用这些函数。