Visual Studio 在调试模式下禁用 TRACE

Posted

技术标签:

【中文标题】Visual Studio 在调试模式下禁用 TRACE【英文标题】:Visual Studio disable TRACE in debug mode 【发布时间】:2009-08-06 22:40:11 【问题描述】:

对于我在 Visual Studio 2005 中开发的 C++ 项目,我想在调试模式下运行代码时禁用 TRACE 输出选项。我已经在互联网上搜索了如何实现这一点,但没有运气。这甚至很容易实现吗?如果是这样,怎么做?提前致谢。

更新#1:

#define     USETRACE        0
#if !USETRACE && DEBUG
    #undef TRACE
    #define TRACE(x)
#endif

我在调试模式下尝试了上面的代码,靠近 stdafx.h 的最顶部,但 TRACE 仍在输出到调试输出。如果能提供关于我的实现有什么问题的建议以便我修复它,那就太好了。谢谢。

【问题讨论】:

根据此信息更新了我的答案。 更新后的建议也不太奏效。 这是 MFC 应用、ATL 应用还是其他框架? @Stephen Nutt:这是一个 MFC 应用程序。 查看 _CrtSetReportHook 和 _CrtSetReportHook2 msdn.microsoft.com/en-us/library/0yysf5e6%28VS.80%29.aspx 【参考方案1】:

原来有一种更简单的方法可以做到这一点,将全局变量 afxTraceEnabled 设置为 false

afxTraceEnabled = false;

参考

http://msdn.microsoft.com/en-us/library/aa235240(VS.60).aspx

【讨论】:

在这种情况下,我在宏中添加了 undef 行。但是,TRACE 语句仍不正常工作(打印到调试输出窗口)。我将这些行放在预编译的头文件(stdafx.h)中。将指令放在预编译的头文件中是否有任何明显不合适的地方?谢谢。 @stanigator,没有。我经常将诸如此类的宏放在 stdafx.h 的顶部,以确保它在全球范围内应用。 @JaredPar:我已经更新了我最初尝试做的事情。干杯。【参考方案2】:

前几次用了困难的方法,这就是我最终要做的:

#if USETRACE
    #define PRINT TRACE
#else
    #define PRINT
#endif

【讨论】:

以上是关于Visual Studio 在调试模式下禁用 TRACE的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 调试模式下“浅”显示 STL 容器?

为啥 Visual Studio 不能在“不调试就启动”模式下打开文件?

OpenGL 程序仅在 Visual Studio 2013 中的调试模式下工作

在调试输出窗口中禁用噪音消息 - Visual Studio 2012

在 Visual Studio 2017 中禁用烦人的调试器通知

Visual Studio 禁用诊断工具