Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么Visual Studio在调试时会暂停?_C#_.net_Visual Studio_Debugging - Fatal编程技术网

C# 为什么Visual Studio在调试时会暂停?

C# 为什么Visual Studio在调试时会暂停?,c#,.net,visual-studio,debugging,C#,.net,Visual Studio,Debugging,有时,当我调试一个c#应用程序时,我会遇到一个断点,当我尝试继续、单步或单步执行时,它什么也不做。突出显示当前行的黄线将消失,但它永远不会到达下一行。应用程序仍然被冻结,就像我在断点上一样,我只能点击停止调试按钮并重新启动。这种情况并非总是发生,但一旦在某个应用程序上启动,它似乎总是在该应用程序启动之后发生。我发现在类声明之前添加以下代码“修复”了该应用程序的问题,但我很好奇为什么会发生这种情况 [System.Diagnostics.DebuggerDisplay("Form1")] 其他详情

有时,当我调试一个c#应用程序时,我会遇到一个断点,当我尝试继续、单步或单步执行时,它什么也不做。突出显示当前行的黄线将消失,但它永远不会到达下一行。应用程序仍然被冻结,就像我在断点上一样,我只能点击停止调试按钮并重新启动。这种情况并非总是发生,但一旦在某个应用程序上启动,它似乎总是在该应用程序启动之后发生。我发现在类声明之前添加以下代码“修复”了该应用程序的问题,但我很好奇为什么会发生这种情况

[System.Diagnostics.DebuggerDisplay("Form1")]
其他详情:
我没有注意到任何一种模式,特别是当它冻结时,它会做什么。我编写的大多数应用程序都使用线程,因此每次都有可能在线程中发生这种情况。

您正在调试哪种类型的代码


当您“进入”时,您是在调用自己的.NET代码,还是在调用本机库,还是在调用没有pdb文件的外部程序集?这两种情况都会导致调试器在执行外部代码时冻结。

如果调试多线程应用程序,则可能会更改线程类型。调试时,您可以使用“线程窗口”在线程之间切换,以便再次看到调试黄线的位置。

我的心理调试器说您缺少某些符号,而VS正在网络上尝试查找它们。尝试将符号路径设置为一些奇怪的值,如C:\foo。

我看到调试器试图计算自动/本地窗口中显示的变量时出现了暂停问题。如果评估复杂,则可能会导致严重的暂停


您可以通过工具选项关闭自动评估功能,这确实会产生很大的影响。

在您的情况下,可能会出现死锁。按下暂停按钮,下次它发生时查看线程视图。

当我的数据库非常慢时,我看到过这种行为,NHibernate试图在引擎盖下向它写入,当数据库被锁定时,整个调试器被随机锁定,虽然这是我第一次

我通过两种方式解决了这个问题

  • 您放置此属性的方式,[System.Diagnostics.DebuggerDisplay(“Form1”)]
  • 关闭工具->选项->调试->常规->启用属性求值和其他隐式函数调用
  • 我仍在调试代码,但在我看来,某些自动计算失败(可能引发异常),这可能会使调试器崩溃


    如果这也是您的情况,请告诉我们。

    外部代码执行时不会冻结。这通常是一个非常简单的行,它永远不会重新启动。这是我的问题,但只有在一个有许多线程的大型应用程序中。我想可能是自动财产评估导致了僵局。