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

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

截至今天,我无法再使用 Visual Studio 调试任何 c# 代码。如果我使用调试器,可以命中断点,但一旦执行暂停,麻烦就来了。按 Step Into 或 Continue 通常会生成一个 AccessViolationException,说明内存已损坏并终止当前请求。如果我随后运行进一步的 Web 请求,我将得到一个 SEHException(发生在未知模块中)。

更奇怪的是,如果 AccessViolationException 没有触发,显示下一条语句的程序计数器会随机跳转。然后代码以随机顺序执行! (直到它崩溃)。

如果没有命中断点,那么应用程序将在 Debug模式下正常运行(即使附加了调试器)。

我确信这不是代码问题。我实际上可以使用新项目和以下代码重现访问冲突:

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”测试项目中为我解决了这个问题。

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

  1. 将项目中的所有库更新为 x64,而不仅仅是 Web 项目。
  2. 在 VS2013 中启用 64 位 IIS express 工具 > 选项 > 项目和解决方案 > Web 项目 > 使用 64 位 IIS ...
  3. 通过控制面板(打开或关闭 Windows 功能)安装Internet Information Services Hostable Web Core。在执行此操作之前,我会在以 HttpException (0x80004005) 形式启动 64 位 Web 项目时遇到错误:指定的参数超出了有效值的范围。安装 HWC 修复了它。

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

关于c# - Visual Studio 无法使用调试器 (AccessViolationException)。随机顺序执行的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29356236/

相关文章:

visual-studio - TFS 2010 和/或测试管理器中的测试用例结果列

opencv - 在VS2013 Express Desktop上运行C++程序时出现“opencv_highgui249.dll is missing”消息

c# - Visual Studio 2015 : error building solution

asp.net-mvc - 名称 'LabelFor' 在 MVC3 的当前上下文中不存在

visual-studio-2013 - 如何在 Visual Studio 中将 TypeScript 输出合并到多个文件中

c# - 锁定非静态方法

c# - 架构问题 : Fluent NHibernate, 存储库模式和 ASP.NET MVC

c# - Linq to Sql 按类分组

c# - 匿名方法的问题

.net - 是否可以将控件添加到类似于 Visual Studio 中的“属性”窗口的 Windows 窗体?