2013-03-26 48 views
3

我有一个程序,它是一个小型俄罗斯方块游戏。我在某些配置中遇到了碰撞检测器的问题,我想调试它,但游戏并非以“有问题”状态开始,我想让游戏进入该状态,只让他们开始调试。由于碰撞检测器运行频率非常高,我不能在我知道只有在达到有问题状态后才能运行的地方设置断点,并且调试过程需要从游戏窗口获得焦点,并且不允许我给出用键盘输入。从Visual Studio的C#中的某个特定时间点开始调试

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

回答

5

是的,你可以通过启动无需调试,然后当你使用调试菜单中选择所需的状态,选择附加到进程做到这一点。当您看到列表时,双击您的应用程序。

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

-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 

调整,以满足您的需求

2

您可以添加一个按钮或快捷键和手动触发一个调试器休息的时候,你看到的是,比赛将进入有问题的配置:

System.Diagnostics.Debugger.Break(); 

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

+2

'System.Diagnostics.Debugger.Break()'会导致一个已连接的调试器中断,但这与线上有活动断点相同。但是你可以使用'System.Diagnostics.Debugger.Launch()'代替。不同之处在于,该过程将“自由”运行(没有附加调试器),直到遇到问题点为止。然后调试器将会启动。 – 2013-03-26 22:27:17

1

conditional breakpoint的某些变体应该适合您。困难的部分在于决定何时想要进入,但有条件的BP为您提供了一个灵活的框架。

+0

请注意,令人沮丧的是,此选项在Visual Studio Express中不可用 – 2013-03-26 21:52:03

相关问题