好的,所以我在调试方面遇到了很多问题。我正在使用VS2013 Pro和Windows 8.1。两者都是最新的。问题是,当我开始调试时,它会抛出此错误的一半时间:
未处理的类型' System.AccessViolationException' 发生在System.Windows.Forms.dll
中附加信息:尝试读取或写入受保护的内存。 这通常表明其他内存已损坏。
这也不是我的代码的错。我做了一个简单的测试作为例子如下。请注意,我没有从此应用程序引用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<int> testing = new List<int>();
for(int i =0; i < 50; i++)
{
testing.Add(i);
}
for (int i = 0; i < 50; i++)
{
Console.WriteLine(testing[i].ToString());
}
Console.ReadLine();
}
}
}
我不知道造成这种情况的原因。如果我单击“确定”并再次运行它,它将起作用。偶尔我必须做两次。
有什么想法吗?
堆栈追踪:
答案 0 :(得分:8)
将平台目标更改为x86对我来说很有用,如果没有前面提到的异常,就不可能单步执行代码。我运行Win 8.1 64位和Visual Studio 2013。
答案 1 :(得分:5)
我也使用visual studio express2015在windows10上遇到了这个问题。构建到x86并没有解决我的问题,但以下解决方法做了诀窍:
此问题是由收集返回值的代码引起的。可以通过禁用托管返回值来解决此问题。
答案 2 :(得分:3)
http://veriworld.verivox.ads/docs/DOC-6011?et=watches.email.document_comment#comment-4629
似乎在某些情况下,VS / .net框架存在内存踩踏问题。我真的希望人们不要再说'它不能成为&#39;当有人说某事打破时。
答案 3 :(得分:1)
没有什么看起来可能会导致问题。
您是否尝试过启用异常?这将导致代码在遇到异常时暂停。
答案 4 :(得分:1)
我可以确认这个问题。它出现在我自己的商业应用程序分发的一个小的(非常简单的)WinForms程序中。在任何早期版本的VS回到VS2005中都没有发生过,包括那些在同一台机器上运行的版本。它只发生在VS2013中。我的VS版本没有第三方加载项,除了VS本身安装的加载项。即使“Main()”中的所有代码都被注释掉,也会出现问题。我尝试重新启动,禁用病毒检查程序,防火墙等。我的应用程序的目标版本(2.0,3.5,4.0,无论如何)没有区别。它经常发生但随机发生。有时候它有效,有时则不然。去图。
答案 5 :(得分:1)
在我的情况下,这种VS行为是由Comodo防火墙引起的。
解决方案是将VS Projects文件夹添加到Comodo HIPS排除列表中(即使HIPS已关闭!)。
以下是相关帖子Comodo论坛:https://forums.comodo.com/empty-t98149.0.html