【发布时间】:2009-05-03 19:18:18
【问题描述】:
我正在 Visual Studio 2008 中开发一个小型 C++ 游戏。我想在几秒钟后或按下一些按钮后查看矢量的内容。在这种情况下,断点是无用的,因为它们会在每次调用游戏循环时阻止我(每秒约 60 次)。这种情况下如何调试?
谢谢!
【问题讨论】:
标签: c++ visual-studio-2008 debugging
我正在 Visual Studio 2008 中开发一个小型 C++ 游戏。我想在几秒钟后或按下一些按钮后查看矢量的内容。在这种情况下,断点是无用的,因为它们会在每次调用游戏循环时阻止我(每秒约 60 次)。这种情况下如何调试?
谢谢!
【问题讨论】:
标签: c++ visual-studio-2008 debugging
使用来自 Windows API 的函数 OutputDebugString。您可以随时调用它,例如代码中的每 100 个循环。
函数信息是here
请阅读此页面上的所有 cmets - 有人声称在您的 IDE (VS2008) 中,此函数的输出显示在“立即窗口”而不是“输出”中。
【讨论】:
您可以设置条件断点,即仅当给定表达式为真时才在某个位置命中的断点。例如,您可以设置一个仅在循环中每 n 次触发一次的断点。
【讨论】:
您可以使用简单的输出到控制台。
假设你想显示一个整数,你可以简单地使用printf 例如:
printf("the number is %d \n", vectorArray.at(place) );
【讨论】:
设置一个经过的计时器和一些非常基本的东西。
如果 elapsedTime > 3 秒: 到达你的断点,检查你的向量
或者,如果您想停在一个非常具体的点,只需标记一个计数器以跟踪您完成了多少帧。
【讨论】:
除了条件断点,您还可以让断点将向量值写入控制台而不是停止。
右键单击断点并选择“当命中时”单击“打印消息”,然后将值添加到花括号中的消息中。使用“命中计数”让断点在这么多周期后执行。 “条件”选项对于根据变量中的某个值设置断点也很有用。
【讨论】:
您也可以在一段条件代码中设置断点,例如:
if(keyPressed('S'))
{
int a = 42; // <-- set breakpoint here
}
pro vs 条件断点是条件可以稍微复杂一点,con是每次需要更改条件时,都需要编译并链接您的应用程序。
【讨论】:
我发现如果你包含并使用 fprintf(stdout,"")
当您的程序仍在运行时,它会在屏幕上返回命令提示符
【讨论】: