3

我有一个程序,它是一个类似俄罗斯方块的小游戏。我的碰撞检测器在某些配置中有问题,我想对其进行调试,但游戏并未以“有问题”状态启动,我想让游戏进入该状态并且只有他们开始调试。由于碰撞检测器运行非常频繁,我不能在我知道只有在我达到问题状态后才会运行的地方设置断点,并且调试过程从游戏窗口获得焦点,并且不允许我给出用键盘输入。

使用 Visual Studio 2012,有没有办法只在一段时间后启动调试器,在启动时它会忽略断点,只有在我告诉它之后,它才会在断点处开始中断?

4

4 回答 4

5

是的,您可以通过在不调试的情况下开始执行此操作,然后当您到达所需的状态时,使用“调试”菜单,选择“附加到进程”。当您看到列表时,双击您的应用程序。

另一种可能的解决方案是禁用断点,然后当您到达您想要的状态(您将开始调试的状态)时,只需使用断点窗口启用您想要的断点。

于 2013-03-26T21:48:01.193 回答
2

当您看到游戏将进入有问题的配置时,您可以添加按钮或快捷方式并手动触发调试器中断:

System.Diagnostics.Debugger.Break();

从那里在碰撞检测过程中放置​​另一个断点。

于 2013-03-26T21:48:41.170 回答
1

Some variant of conditional breakpoint should work for you. The hard part is deciding when you want to break in, but conditional BPs give you a flexible framework to work within.

于 2013-03-26T21:50:22.530 回答
-1
//assume that frame_counter is incremented at 60 Hz

//adjust this conditional to whatever you want to trigger the breakpoint for real
if(frame_counter > 60 * 60 * 5) { //wait 5 minutes

} // place breakpoint here

调整以适应您的需求

于 2013-03-26T21:47:01.753 回答