【问题标题】:VS2013 - Output window does not show std::coutVS2013 - 输出窗口不显示 std::cout
【发布时间】:2014-12-31 22:49:53
【问题描述】:

我正在开发一个非托管 C++11 应用程序并在 VS2013 中对其进行调试。我有一个助手类

#include <cstdio>
class DebugHelper : public dbg::IDebugHelper {
   public:
     virtual void outputLine(const std::string & message) const override 
     { std::cout << message << std::endl; }
   .....
 };

我希望通过 DebugHelper 的 outputLine 打印的字符串会显示在工作室的输出窗口中。然而,std::cout 和 std::err 都没有发生这种情况。它应该吗?我缺少的项目属性中是否有某种设置?顺便说一句,相同的代码在 QtCreator 下的 Mac 上按预期工作。

【问题讨论】:

  • 类中的一行代码并不能真正证明您正在输出任何东西。向我们展示演示该问题的程序。编辑:如果是调试窗口,则需要使用OutputDebugStringTRACE 宏。

标签: c++ c++11 visual-studio-2013


【解决方案1】:

对于 Visual Studio,使用 OutputDebugStringTRACE 输出到调试监视器(在 Visual Studio 中运行时为 Output 窗口)。

IMO 使用上述函数输出字符串以进行调试比 cout 和糟糕的“MessageBox”方法更受欢迎,因为这两种其他方法都可能(并且很多时候)会干扰程序的运行你正在跑步。

【讨论】:

  • 谢谢。我对 TRACE 有疑问,因为我需要调试和发布版本中的输出。但是,OutputDebugString 可以满足我在调试和发布中的需要和工作。
  • @LRaiz - 我也更喜欢 OutputDebugString - 只是添加了 TRACE 以防万一你遇到它。
【解决方案2】:

输出窗口显示来自调试流的内容 - 控制台输出进入控制台窗口。

【讨论】:

  • 更具体地说,cout 被重定向到标准输出,默认情况下是控制台窗口。可以发送到其他位置(即文件)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-11
  • 2011-07-08
相关资源
最近更新 更多