我正在维护一个C++ COM项目。有一些跟踪行,例如ATLTRACE(message);
我搜索了ATLTRACE。 MSDN告诉Visual C++输出窗口将显示它。但是,该产品是发行版。客户将没有源,也不会在VS中对其进行调试。那么还有其他方便的观看方式吗? Windows事件查看器会捕捉到吗?还是我必须更改代码? Win7,VS2013
最佳答案
ATLTRACE仅使用调试输出,并且仅在调试版本中有效!
因此,您可以为最终用户提供调试版本以进行测试,并使用Sysinternals中的DebugView。但这可能很复杂,因为您还必须结束不可重新分发的调试运行时。
但是,您可以轻松编写自己的具有相同功能的MY_TRACE宏。
#define MY_TRACE GetMyTracer() // returns object of CMyTracer
...
class CMyTracer
{
...
// Helper operator to get the trace commands. They call the TraceV functions
void operator()(PCSTR pszFormat, ...);
void operator()(PCWSTR pszFormat, ...);
// Worker functions that do the real job calling TraceV functions
void Trace(PCSTR pszFormat, ...);
void Trace(PCWSTR pszFormat, ...);
// Allowed to be virtual to do some internal mystique stuff, like redirecting and this functions perform all output...
virtual void TraceV(PCSTR pszFormat, va_list args);
virtual void TraceV(PCWSTR pszFormat, va_list args);
...
现在您可以使用它代替ATLTRACE
...
MYTRACE("Simple output\n");
MYTRACE("More complex output %d\n", 4711);
注意:用您自己的替换替换所有ATLTRACE宏是不明智的。您可以将跟踪输出分散到不影响速度的位置,但是值得引用。
关于c++ - 在哪里可以看到ATLTRACE输出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47585567/