程序随机获取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并没有解决我的问题,但以下解决方法做了诀窍:
此问题是由收集返回值的代码引起的。 可以通过禁用托管返回值来解决此问题。
- 转到系统属性(Win8:WinKey + X,选择’系统’,Win7:从我的计算机打开’属性’)
- 高级系统设置
- 环境变量…
- 点击“新建”并添加
- 名称: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