C# 为什么Visual Studio在调试时会暂停?
有时,当我调试一个c#应用程序时,我会遇到一个断点,当我尝试继续、单步或单步执行时,它什么也不做。突出显示当前行的黄线将消失,但它永远不会到达下一行。应用程序仍然被冻结,就像我在断点上一样,我只能点击停止调试按钮并重新启动。这种情况并非总是发生,但一旦在某个应用程序上启动,它似乎总是在该应用程序启动之后发生。我发现在类声明之前添加以下代码“修复”了该应用程序的问题,但我很好奇为什么会发生这种情况C# 为什么Visual Studio在调试时会暂停?,c#,.net,visual-studio,debugging,C#,.net,Visual Studio,Debugging,有时,当我调试一个c#应用程序时,我会遇到一个断点,当我尝试继续、单步或单步执行时,它什么也不做。突出显示当前行的黄线将消失,但它永远不会到达下一行。应用程序仍然被冻结,就像我在断点上一样,我只能点击停止调试按钮并重新启动。这种情况并非总是发生,但一旦在某个应用程序上启动,它似乎总是在该应用程序启动之后发生。我发现在类声明之前添加以下代码“修复”了该应用程序的问题,但我很好奇为什么会发生这种情况 [System.Diagnostics.DebuggerDisplay("Form1")] 其他详情
[System.Diagnostics.DebuggerDisplay("Form1")]
其他详情:
我没有注意到任何一种模式,特别是当它冻结时,它会做什么。我编写的大多数应用程序都使用线程,因此每次都有可能在线程中发生这种情况。您正在调试哪种类型的代码
当您“进入”时,您是在调用自己的.NET代码,还是在调用本机库,还是在调用没有pdb文件的外部程序集?这两种情况都会导致调试器在执行外部代码时冻结。如果调试多线程应用程序,则可能会更改线程类型。调试时,您可以使用“线程窗口”在线程之间切换,以便再次看到调试黄线的位置。我的心理调试器说您缺少某些符号,而VS正在网络上尝试查找它们。尝试将符号路径设置为一些奇怪的值,如C:\foo。我看到调试器试图计算自动/本地窗口中显示的变量时出现了暂停问题。如果评估复杂,则可能会导致严重的暂停
您可以通过工具选项关闭自动评估功能,这确实会产生很大的影响。在您的情况下,可能会出现死锁。按下暂停按钮,下次它发生时查看线程视图。当我的数据库非常慢时,我看到过这种行为,NHibernate试图在引擎盖下向它写入,当数据库被锁定时,整个调试器被随机锁定,虽然这是我第一次 我通过两种方式解决了这个问题
如果这也是您的情况,请告诉我们。外部代码执行时不会冻结。这通常是一个非常简单的行,它永远不会重新启动。这是我的问题,但只有在一个有许多线程的大型应用程序中。我想可能是自动财产评估导致了僵局。