【问题标题】:How to log stuff in console in Visual Studio C++如何在 Visual Studio C++ 中的控制台中记录内容
【发布时间】:2009-05-03 19:18:18
【问题描述】:

我正在 Visual Studio 2008 中开发一个小型 C++ 游戏。我想在几秒钟后或按下一些按钮后查看矢量的内容。在这种情况下,断点是无用的,因为它们会在每次调用游戏循环时阻止我(每秒约 60 次)。这种情况下如何调试?

谢谢!

【问题讨论】:

    标签: c++ visual-studio-2008 debugging


    【解决方案1】:

    使用来自 Windows API 的函数 OutputDebugString。您可以随时调用它,例如代码中的每 100 个循环。

    函数信息是here

    请阅读此页面上的所有 cmets - 有人声称在您的 IDE (VS2008) 中,此函数的输出显示在“立即窗口”而不是“输出”中。

    【讨论】:

    • 不要忘记 \r\n 作为行尾。
    • 到目前为止我读过的所有文档都说“打印消息”输出到输出窗口。感谢您的评论,我能够挖掘图标和菜单混乱(调试-> Windows->立即)并找到要显示的“立即”窗口!我所有的跟踪点消息都突然可见!!非常感谢。
    【解决方案2】:

    您可以设置条件断点,即仅当给定表达式为真时才在某个位置命中的断点。例如,您可以设置一个仅在循环中每 n 次触发一次的断点。

    【讨论】:

      【解决方案3】:

      您可以使用简单的输出到控制台。

      假设你想显示一个整数,你可以简单地使用printf 例如:

      printf("the number is %d \n", vectorArray.at(place) );
      

      【讨论】:

      • 这不会显示,除非 A)您的应用程序作为控制台应用程序链接或 B)您已在应用程序中打开控制台并将标准输出重定向到它。
      【解决方案4】:

      设置一个经过的计时器和一些非常基本的东西。

      如果 elapsedTime > 3 秒: 到达你的断点,检查你的向量

      或者,如果您想停在一个非常具体的点,只需标记一个计数器以跟踪您完成了多少帧。

      【讨论】:

        【解决方案5】:

        除了条件断点,您还可以让断点将向量值写入控制台而不是停止。

        右键单击断点并选择“当命中时”单击“打印消息”,然后将值添加到花括号中的消息中。使用“命中计数”让断点在这么多周期后执行。 “条件”选项对于根据变量中的某个值设置断点也很有用。

        【讨论】:

          【解决方案6】:

          您也可以在一段条件代码中设置断点,例如:

          if(keyPressed('S'))
          {
            int a = 42; // <-- set breakpoint here
          }
          

          pro vs 条件断点是条件可以稍微复杂一点,con是每次需要更改条件时,都需要编译并链接您的应用程序。

          【讨论】:

            【解决方案7】:

            我发现如果你包含并使用 fprintf(stdout,"")

            当您的程序仍在运行时,它会在屏幕上返回命令提示符

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-11-06
              • 1970-01-01
              • 2013-11-15
              相关资源
              最近更新 更多