Сбой CLR, когда за изменением кода во время отладки ("Изменить и продолжить") следует Debug.SetNextStatement
Во время сеанса отладки Visual Studio 2015 (попадание на точку останова), если я изменяю практически любой код и выбираю любую из команд " Продолжить", " Шаг в", " Шаг за шагом" (и т. Д.), Я немедленно получаю исключение ExecutionEngineException, за которым следует сбой CLR.
Кажется, это появляется только в одном проекте.
System.Windows.Forms.dll!System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(int dwComponentID, int reason, int pvLoopData) Unknown
System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(int reason, System.Windows.Forms.ApplicationContext context) Unknown
System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoop(int reason, System.Windows.Forms.ApplicationContext context) Unknown
System.Windows.Forms.dll!System.Windows.Forms.Application.Run(System.Windows.Forms.ApplicationContext context) Unknown
Microsoft.VisualBasic.dll!Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun() Unknown
Microsoft.VisualBasic.dll!Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel() Unknown
Microsoft.VisualBasic.dll!Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(string[] commandLine) Unknown
[Native to Managed Transition]
[Managed to Native Transition]
mscorlib.dll!System.AppDomain.ExecuteAssembly(string assemblyFile, System.Security.Policy.Evidence assemblySecurity, string[] args) Unknown
Microsoft.VisualStudio.HostingProcess.Utilities.dll!Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() Unknown
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(object state) Unknown
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Unknown
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() Unknown
Как решить эту проблему?
2 ответа
Я нашел ответ путем минимизации проблемного сценария.
Похоже, что проблема с комбинацией /questions/tagged/visual-studio-2015 + .net-3.5 + vb.net и этого кода:
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim gridSize As Size = New Size(3, 11)
Dim z As Integer
z = 22
z = 1
End Sub
End Class
Установить точку останова на End Sub
, остановитесь на этом, поменяйте местами назначения и установите следующий оператор на первое назначение. Boom.
Об этом сообщили в Microsoft. Обходной путь должен использовать .net-4.0 и выше.
У меня та же проблема с Visual Studio Community 2015 в C#. При отладке проекта, скомпилированного для.Net 3.5, при достижении точки останова и выполнении "редактировать и продолжить" он редко выживает. Сбой компилятора /IDE с одним из нескольких возможных сообщений об ошибках, чаще всего с исключением ExecutionEngineException, за которым следует сбой CLR.
Когда тот же проект компилируется в.net 4.6.1, отладчик IDE VS 2015 работает правильно. Достаточно установить основной проект на.net 4.6.1; Затем вызываемые.dll являются отлаживаемыми, даже если они по-прежнему.net 3.5.
(Старый отладчик VS 2013 IDE работал правильно с.net 3.5, очень редко он падал.)
Такое поведение верно для многих проектов.