2008-11-21 279 views

回答

0

如果您的应用程序处于空闲状态(即,它实际上正在执行Application.Run),调试器只会暂停在那里。

如果你真的不想结束那里,你可以尝试在调用Application.Run的方法上使用'DebuggerNonUserCode'属性,但我不会推荐它。

3

@sramey你确定在上述行中总是停顿吗?如果我在这里可能冒险猜测,我认为当你按下暂停按钮时,你的应用程序处于空闲状态,并且程序将大部分时间花费在由Application.Run()提取的Win32消息循环中。因此,VS很可能会中断主线程的执行。

我认为按暂停并不总是调试的最佳方式。您需要对问题区域进行有根据的猜测,并在相关方法中设置断点(如构造函数,API调用等)

需要关于您在此尝试完成的更多信息。

0

考虑到以前的评论,您可能希望设置一个断点,您希望您的应用程序停止。

我通常是通过去我想让调试器停止的地方,然后按F9来做到这一点。您也可以点击左侧边距。还有其他方法。

也可以将断点配置为仅在特定条件为真时停止(例如i == 0)。微软有a guide on Debugging in Visual Studio

0

我想你想改变(编辑并继续)到一段可能正在运行或可能不运行的代码。如果它没有运行放置断点不会让你在那里。 当你暂停时,VS打开Program.cs(因为大部分时间应用程序都处于空闲状态并坐在这里)并隐藏了你想要修改的代码。

调试器正在做什么设计。不幸的是,没有设置来改变这种行为并允许一个异常(检查工具>选项>调试)。要做的最简单的事情就是关闭Program.cs,并且在您暂停之前,您将完全停留在您的位置。

或者,编写一个在后台运行并监视VS活动的应用程序,当它发现Program.cs处于打开状态时关闭它。为此,您将需要“user32”的API函数,例如FndWindow,GetWindowText等。有大量代码示例显示如何“窥探”并控制另一个应用程序。