Visual Studio无法使用调试器(AccessViolationException)。代码以随机顺序执行

时间:2015-03-30 21:03:04

标签: c# visual-studio visual-studio-2013 windows-10

截至今天,我无法再使用Visual Studio调试任何c#代码。如果我使用调试器,可能会遇到断点,但只要执行暂停,问题就会开始。按Step Into或Continue将正常生成AccessViolationException表示内存已损坏并终止当前请求。如果我再运行一个Web请求,我将获得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预览机上,上周有一个更新。我不确定在哪里可以确认它,或者在不重新映像机器的情况下修复它。

2 个答案:

答案 0 :(得分:1)

Any CPU更改为x64只能在我的" Hello World"测试项目。

为了开始我的原始项目,这实际上是一个Web项目,我不得不采取一些额外的步骤。

  1. 将项目中的所有库更新为x64,而不仅仅是Web项目。
  2. 在VS2013 Tools > Options > Projects & Solutions > Web Projects > Use 64 Bit IIS ...
  3. 中启用64位IIS express
  4. 通过控制面板(Internet Information Services Hostable Web Core)安装Turn Windows Features On or Off。在我执行此操作之前,在以HttpException (0x80004005): Specified argument was out of the range of valid values形式启动64位Web项目时会出错。安装HWC修复它。
  5. 仍然没有更明智的为什么会发生这种情况,但至少我可以再次调试项目。

答案 1 :(得分:0)

这个异常似乎是从无处开始的,当然让我有些头疼,但我能够通过以下方式解决我的问题:

  1. 进入受影响项目的属性
  2. 转到“调试”选项卡
  3. 取消选中“启用本机代码调试”