Trace
变量的值到文件中
在调试程序过程中,有时候会遇到一些稀奇古怪的问题。为了能查到问题的根本,有时需要使用TRACE系列函数将某些变量的值打印到编译器IDE的OutPut窗口。如果程序中写了很多TRACE语句或者想要跟踪的变量很多或者说想要对比多次运行情况下变量的值,在output窗口中查看时可能就不太方便或者根本不能实现了。为此,我写了一个CTraceFile类,它可以把TRACE结果存到文件中,该类继承自CStdioFile并实现了Trace函数。整个类的实现非常简单,使用起来也很容易,只需要在合适的地方构造一个CTraceFile对象即可,其他使用和常规使用TRACE函数是一样的。它的代码如下:
#pragma
once
#define BUFFER_SIZE 4096
class CTraceFile : public CStdioFile
{
public :
CTraceFile()
{
// Default constructor
}
CTraceFile(LPCTSTR lpszFileName, UINT nOpenFlags)
:CStdioFile(lpszFileName, nOpenFlags)
{
// Add your extra initialization here
}
void CTraceFile::Trace(LPCTSTR lpszFormat, )
{
va_list args;
va_start(args, lpszFormat);
TCHAR szBuffer[BUFFER_SIZE];
_vsntprintf(szBuffer, sizeof (szBuffer), lpszFormat, args);
ASSERT(m_pStream);
WriteString(szBuffer);
va_end(args);
}
};
#define BUFFER_SIZE 4096
class CTraceFile : public CStdioFile
{
public :
CTraceFile()
{
// Default constructor
}
CTraceFile(LPCTSTR lpszFileName, UINT nOpenFlags)
:CStdioFile(lpszFileName, nOpenFlags)
{
// Add your extra initialization here
}
void CTraceFile::Trace(LPCTSTR lpszFormat, )
{
va_list args;
va_start(args, lpszFormat);
TCHAR szBuffer[BUFFER_SIZE];
_vsntprintf(szBuffer, sizeof (szBuffer), lpszFormat, args);
ASSERT(m_pStream);
WriteString(szBuffer);
va_end(args);
}
};