程序随机获取System.AccessViolationException

好的,所以我在调试时遇到了很多问题。 我正在使用VS2013 Pro和Windows 8.1。 两者都是最新的。 问题是,当我开始调试时,它会抛出此错误的一半时间:

System.Windows.Forms.dll中发生了未处理的“System.AccessViolationException”类型exception

附加信息:尝试读取或写入受保护的内存。 这通常表明其他内存已损坏。

它也不是我的代码的错。 我做了一个简单的测试作为例子如下。 请注意,我没有从此应用程序引用System.Windows.Forms。

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { List testing = new List(); for(int i =0; i < 50; i++) { testing.Add(i); } for (int i = 0; i < 50; i++) { Console.WriteLine(testing[i].ToString()); } Console.ReadLine(); } } } 

我不知道造成这种情况的原因。 如果我单击“确定”并且大多数时间再次运行它将会起作用。 偶尔我必须做两次。

有任何想法吗?

堆栈跟踪:

在此处输入图像描述

将平台目标更改为x86对我来说是有用的,如果没有前面提到的exception,就不可能单步执行代码。 我运行Win 8.1 64位和Visual Studio 2013。

我也使用visual studio express2015在windows10上遇到了这个问题。 构建到x86并没有解决我的问题,但以下解决方法做了诀窍:

此问题是由收集返回值的代码引起的。 可以通过禁用托管返回值来解决此问题。

  1. 转到系统属性(Win8:WinKey + X,选择’系统’,Win7:从我的计算机打开’属性’)
  2. 高级系统设置
  3. 环境变量…
  4. 点击“新建”并添加
    • 名称:VSDebug_DisableManagedReturnValue
    • 价值:1

来源: https : //connect.microsoft.com/VisualStudio/feedback/details/819552/visual-studio-debugger-throws-accessviolationexception

http://veriworld.verivox.ads/docs/DOC-6011?et=watches.email.document_comment#comment-4629

似乎在某些情况下VS / .net框架存在内存踩踏问题。 我真的希望当有人说出某些事情时,人们会停止说’它不能’。

没有什么看起来可能会导致问题。

您是否尝试过启用exception? 这将导致代码在遇到exception时暂停。

在此处输入图像描述

我可以证实这个问题。 它出现在我自己的商业应用程序分发的一个小的(非常简单的)WinForms程序中。 在任何早期版本的VS回到VS2005都没有发生过,包括那些在同一台机器上运行的版本。 它只发生在VS2013中。 我的VS版本没有第三方加载项,除了VS本身安装的加载项。 即使“Main()”中的所有代码都被注释掉,也会出现问题。 我尝试重新启动,禁用病毒检查程序,防火墙等。我的应用程序的目标版本(2.0,3.5,4.0,无论如何)没有区别。 它经常发生但随机发生。 有时它有效,有时则不然。 去搞清楚。

在我的情况下,这种VS行为是由Comodo防火墙引起的。

解决方案是将VS Projects文件夹添加到Comodo HIPS排除列表中(即使HIPS已关闭!)。

这是一个相关的线程Comodo论坛: https : //forums.comodo.com/empty-t98149.0.html