2

截至今天,我无法再使用 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 预览机器上,上周有更新。我不确定还有什么地方可以确认它,或者在不重新映像机器的情况下修复它。

4

2 回答 2

1

在我的“Hello World”测试项目中,从更改Any CPU为刚刚为我解决了这个问题。x64

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

  1. 将项目中的所有库更新为x64,而不仅仅是 Web 项目。
  2. 在 VS2013 中启用 64 位 IIS expressTools > Options > Projects & Solutions > Web Projects > Use 64 Bit IIS ...
  3. Internet Information Services Hostable Web Core通过控制面板 ( )安装Turn Windows Features On or Off。在我这样做之前,我在启动 64 位 Web 项目时会收到​​一个错误HttpException (0x80004005): Specified argument was out of the range of valid values。安装 HWC 修复了它。

仍然不知道为什么会发生这种情况,但至少我可以再次调试项目。

于 2015-03-31T16:03:26.827 回答
0

这个异常似乎突然出现,当然让我有些头疼,但我能够通过执行以下操作来解决我的问题:

  1. 进入受影响项目的属性
  2. 转到调试选项卡
  3. 取消选中“启用本机代码调试”
于 2017-11-13T16:15:53.003 回答