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