Visual Studio 无法使用调试器 (AccessViolationException)。随机顺序执行的代码
Visual Studio unable to use debugger (AccessViolationException). Code executing in random order
截至今天,我无法再使用 Visual Studio 调试任何 c# 代码。如果我使用调试器,可以命中断点,但一旦执行暂停,麻烦就来了。按 Step Into 或 Continue 通常会生成一个 AccessViolationException
表示内存已损坏并终止当前请求。如果我再 运行 一个进一步的网络请求,我将得到一个 SEHException
(发生在未知模块中)。
更奇怪的是,如果 AccessViolationException 没有触发,显示下一条语句的程序计数器会随机跳转。然后代码以随机顺序执行! (直到它崩溃)。
如果没有命中断点,那么应用程序将 运行 在调试模式下很好(即使附加了调试器)。
我确信这不是代码问题。我实际上可以使用新项目和以下代码重现访问冲突:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello world");
Console.WriteLine("Access violation"); // This will throw if breakpoint set
}
}
删除VS缓存,删除.suo,清理,尝试安全模式。一个可能的怀疑是这是在一台 Windows 10 预览机器上,并且上周有一个更新。我不太确定还有什么地方可以用它来确认它,或者在不重新映像机器的情况下修复它。
从 Any CPU
更改为仅 x64
在我的 "Hello World" 测试项目中为我解决了这个问题。
为了开始我原来的项目,这实际上是一个网络项目,我不得不采取一些额外的步骤。
- 将项目中的所有库更新为
x64
,而不仅仅是 Web 项目。
- 在 VS2013 中启用 64 位 IIS express
Tools > Options > Projects & Solutions > Web Projects > Use 64 Bit IIS ...
- 通过控制面板 (
Turn Windows Features On or Off
) 安装 Internet Information Services Hostable Web Core
。在执行此操作之前,以 HttpException (0x80004005): Specified argument was out of the range of valid values
形式启动 64 位 Web 项目时会出现错误。安装 HWC 修复了它。
仍然 none 更清楚为什么会发生这种情况,但至少我可以再次调试项目。
这个异常似乎不知从何而来,当然让我有些头疼,但我通过执行以下操作解决了我的问题:
- 进入受影响项目的属性
- 转到“调试”选项卡
- 取消选中 "Enable native code debugging"
截至今天,我无法再使用 Visual Studio 调试任何 c# 代码。如果我使用调试器,可以命中断点,但一旦执行暂停,麻烦就来了。按 Step Into 或 Continue 通常会生成一个 AccessViolationException
表示内存已损坏并终止当前请求。如果我再 运行 一个进一步的网络请求,我将得到一个 SEHException
(发生在未知模块中)。
更奇怪的是,如果 AccessViolationException 没有触发,显示下一条语句的程序计数器会随机跳转。然后代码以随机顺序执行! (直到它崩溃)。
如果没有命中断点,那么应用程序将 运行 在调试模式下很好(即使附加了调试器)。
我确信这不是代码问题。我实际上可以使用新项目和以下代码重现访问冲突:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello world");
Console.WriteLine("Access violation"); // This will throw if breakpoint set
}
}
删除VS缓存,删除.suo,清理,尝试安全模式。一个可能的怀疑是这是在一台 Windows 10 预览机器上,并且上周有一个更新。我不太确定还有什么地方可以用它来确认它,或者在不重新映像机器的情况下修复它。
从 Any CPU
更改为仅 x64
在我的 "Hello World" 测试项目中为我解决了这个问题。
为了开始我原来的项目,这实际上是一个网络项目,我不得不采取一些额外的步骤。
- 将项目中的所有库更新为
x64
,而不仅仅是 Web 项目。 - 在 VS2013 中启用 64 位 IIS express
Tools > Options > Projects & Solutions > Web Projects > Use 64 Bit IIS ...
- 通过控制面板 (
Turn Windows Features On or Off
) 安装Internet Information Services Hostable Web Core
。在执行此操作之前,以HttpException (0x80004005): Specified argument was out of the range of valid values
形式启动 64 位 Web 项目时会出现错误。安装 HWC 修复了它。
仍然 none 更清楚为什么会发生这种情况,但至少我可以再次调试项目。
这个异常似乎不知从何而来,当然让我有些头疼,但我通过执行以下操作解决了我的问题:
- 进入受影响项目的属性
- 转到“调试”选项卡
- 取消选中 "Enable native code debugging"