Trace选项

为了帮助调试,MFC提供了TRACE输出机制。它帮助显示MFC库的内部信息,包括一些出错信息。请尽量使用TRACE功能,你会发现它是很有用的。

默认情况下,TRACE消息不打开的,打开它需要下面几个步骤:(可以在控制台或资源管理器下支持相应的可执行文件)

  1. 以_DEBUG编译程序,并以debug链接程序;
  2. 使能afxTraceEnabled标记,虽然有许多方法可以做到这一点,但是最好还是使用TRACER.EXE;
  3. 自定义afxTraceFlags显示级别,使用TRACER.EXE你会发现很方便。

显示的内容会在当前输出窗口中。如果有debugger窗口,消息会消息在debugger输出窗口中。

前面老说什么TRACER.EXE,现在让我们来看看它如何使用:它是一个小程序,可以使用用户设置AFX.INI中的选项。TRACER在\DevStudio\VC\bin>下面,它的源代码也有,你可以自己定制它。AFX.INI文件在MFC\SRC下,这个文件应该被放置在Windows目录下,或运行TRACER.EXE创建新的AFX.INI文件。下面就是我机器下Window目录下AFX.INI文件的内容:

[Diagnostics]
TraceEnabled=1
TraceFlags=127

全局量afxTraceFlags的定义在AFXWIN.H中,它的具体定义如下:

enum AfxTraceFlags
{
traceMultiApp = 1, // multi-app debugging
traceAppMsg = 2, // main message pump trace (includes DDE)
traceWinMsg = 4, // Windows message tracing
traceCmdRouting = 8, // Windows command routing trace (set 4+8 for control notifications)
traceOle = 16, // special OLE callback trace
traceDatabase = 32, // special database trace
traceInternet = 64 // special Internet client trace
};