Visual Studio 2017调试错误:为防止评估函数* .toString允许运行的所有线程时发生不安全中止

时间:2018-09-05 14:17:12

标签: visual-studio visual-studio-2017 visual-studio-debugging

我将Visual Studio 2017更新为版本15.8.2。

此更新之后,我开始在调试时遇到这些错误:

Error Image 1

Error Image 2

Error Image 3

以下是错误消息:

  

Visual Studio调试错误:为了防止在评估函数* .toString允许运行的所有线程时发生不安全的中止。这可能会更改进程的状态,并且遇到的任何断点都将被跳过。

此错误经常出现,并且一段时间后Visual Studio崩溃。

我试图再次卸载并安装Visual Studio并重置首选项,但是我没有运气。

当我禁用选项:“启用属性评估和其他隐式函数调用”时,当我尝试通过将鼠标移到某些属性上来评估某些属性时,会遇到相同的错误。如果没有它,调试起来将非常困难,在此构建之前我没有任何问题。

问题与C#和Visual Basic(.NET)相同。

此问题是否有解决方法?我的团队使用Visual Studio 2017 15.7.4版在同一个项目上工作没有问题

3 个答案:

答案 0 :(得分:8)

我添加了相同的错误消息,但函数名称不同:

  

为防止在评估该功能时发生不安全的中止   'Microsoft.VisualStudio.Debugger.Runtime.Tracing.Refresh'所有线程   被允许运行。这可能已经改变了过程的状态   并且遇到的任何断点都将被跳过。


这就是我摆脱这种讨厌的错误的方式:
在Visual Studio 2017中转到
工具→选项→调试→常规→选中“使用托管的兼容模式”
感谢这篇文章:
https://www.codeart.dk/blog/2018/9/vs2017-debugger-timeout/

答案 1 :(得分:0)

  

Visual Studio 2017调试错误:为防止评估函数* .toString允许运行的所有线程时发生不安全中止

根据this document

  

此问题的一个常见原因是调试器评估时   一个属性,它仅允许被检查的线程执行。所以   如果该属性正在等待其他线程在调试后的内部运行   应用程序,以及是否以.NET运行时未在等待的方式   能够打断,这个问题就会发生。

要解决此问题,您可以尝试以下两种可能的解决方案:

  • 解决方案1:阻止调试器调用getter属性或
  • 解决方案2:让目标代码要求调试器中止调试 评估ToString方法

此外,如果上述不能解决该错误,您还可以安装以前的旧版本Visual Studio来检查它是否对您有用:

https://docs.microsoft.com/en-us/visualstudio/productinfo/installing-an-earlier-release-of-vs2017#top

希望这会有所帮助。

答案 2 :(得分:0)

此问题是Visual Studio 2019的噩梦。VS中的任何人都在从事此工作吗?对于这种问题,不可能有如此低质量的标尺。 VS 2019中的设置无关紧要,这只是一个不间断的问题。在此弹出窗口每分钟出现10次的情况下,还需要做其他什么才能在VS中进行调试?