我正在维护一个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/

10-10 04:17