向所有可以提供帮助的人致以问候, 我一直在为C#dev成功运行VS Community 2015。在Mac / bootcamp上的Win.8上。今晚我想尝试C ++ / CLI,并下载VS推荐的软件包。
现在,在构建最简单的C#控制台程序时崩溃了。 JIT调试器出现以下错误:
devenv.exe中0x6F1F0192(msenv.dll)的未处理异常:0xC0000005:访问冲突读取位置0x00000010。
如果存在此异常的处理程序,则可以安全地继续该程序。
调试器弹出窗口显示: Microsoft.VisualStudio.Shell.14.0.dll中发生未处理的“System.AccessViolationException”类型异常
附加信息:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。
此错误的常规帮助链接到: https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k(EHAccessViolation)&rd=true
说明: 当代码尝试读取或写入尚未分配或无法访问的内存时,非托管或不安全代码中会发生访问冲突。这通常是因为指针具有错误值。并非所有通过坏指针读取或写入都会导致访问冲突,因此访问冲突通常表示通过错误指针发生了多次读取或写入,并且该内存可能已损坏。因此,访问冲突几乎总是表明严重的编程错误。 AccessViolationException清楚地标识了这些严重错误。 在完全由可验证的托管代码组成的程序中,所有引用都是有效的或无效的,并且访问违规是不可能的。仅当可验证的托管代码与非托管代码或不安全的托管代码交互时,才会发生AccessViolationException。 从.NET Framework 4开始,如果异常发生在公共语言运行库保留的内存之外,则结构化异常处理程序中的catch语句不会处理公共语言运行库抛出的AccessViolationException异常。若要处理此类AccessViolationException异常,应将HandleProcessCorruptedStateExceptionsAttribute属性应用于引发异常的方法。此更改不会影响用户代码抛出的AccessViolationException异常,这些异常可以继续被catch语句捕获。对于为.NET Framework的先前版本编写的代码,您希望在.NET Framework 4上重新编译和运行而不进行修改,您可以将该元素添加到应用程序的配置文件中。请注意,如果已为AppDomain.FirstChanceException或AppDomain.UnhandledException事件定义了处理程序,则还可以接收异常通知。
这里的任何人都可以帮助我理解这一点,因为我还没有编写任何非托管代码,VS在hello world程序中崩溃。感谢您的帮助
答案 0 :(得分:1)
当应用程序尝试取消引用无效指针时,会发生访问冲突。 AV是本机代码,等同于NullPointerException,通常会删除该过程。
这是一个严重的错误,几乎可以肯定是Visual Studio中的一个错误。您需要向我们报告,以便我们进行调查。提交错误的地方是https://connect.microsoft.com/visualstudio。
如果您可以在下次发生这种情况时进行进程转储,那么可以更轻松地调查问题。以下是收集故障转储的步骤:
(披露:我在微软的视觉工作室工作)