有时候,当我调试一个c#应用程序时,我会遇到一个断点,当我尝试继续,步骤或步入时,它什么都不做。突出显示当前行的黄线消失,但它永远不会到达下一行。应用程序仍然像我在断点处一样冻结,除了点击停止调试按钮并重新启动,我什么也做不了。这不会一直发生,但一旦它在应用程序上启动,它似乎总是发生在该应用程序之后。我发现在类声明之前添加以下代码“修复”了该应用程序的问题,但我很好奇为什么会发生这种情况。
[System.Diagnostics.DebuggerDisplay("Form1")]
其他细节: 我没有注意到特定线冻结时的任何模式。我编写的大多数应用程序都使用线程,因此每次在一个线程中发生这种情况的可能性很大。
答案 0 :(得分:2)
我已经看到了调试器试图评估自动/本地窗口中显示的变量的停滞问题。如果评估很复杂,那么可能会导致严重的停滞。
您可以通过“工具”|“选项”关闭自动评估,这确实会产生很大的影响。
答案 1 :(得分:2)
我遇到过这种行为,虽然这是我的第一次。
我通过两种方式解决了这个问题
我仍在调试我的代码,但在我看来,一些Autos评估失败(可能抛出异常),这可能会导致调试器崩溃。
如果您的情况也是如此,请告知我们。
答案 2 :(得分:1)
你在调试什么类型的代码?
当你“步入”你是在调用自己的.NET代码,还是调用本机库,或者你没有pdb文件的外部程序集?这两种情况都会导致调试器在外部代码执行时冻结。
答案 3 :(得分:1)
如果您调试多线程应用程序,您可能正在更改线程。您可以在调试时在Thread与“Thread windows”之间切换,以便能够再次查看调试黄线的位置。
答案 4 :(得分:0)
我的通灵调试器说你错过了某些东西的符号,并且VS正在试图查找它们。尝试将符号路径设置为奇怪的东西,如C:\ foo。
答案 5 :(得分:0)
答案 6 :(得分:0)
当我的数据库非常慢时,我已经看到了这种行为,NHibernate试图在引擎盖下写入它,并且当数据库被挂钩时整个调试器被随机锁定。 / p>