Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅在调试时执行ExecutionEngineeException_C#_.net_Visual Studio 2012_Entity Framework 5_Executionengineexception - Fatal编程技术网

C# 仅在调试时执行ExecutionEngineeException

C# 仅在调试时执行ExecutionEngineeException,c#,.net,visual-studio-2012,entity-framework-5,executionengineexception,C#,.net,Visual Studio 2012,Entity Framework 5,Executionengineexception,我有一个C代码,只有在调试时才会抛出ExecutionEngineeException。当我只是在VisualStudio中运行它而不进行调试(按“开始而不调试”)按钮时,这段代码工作正常。但当我从VisualStudio调试它时,它抛出ExecutionEngineeException 由于这个问题,我无法调试我的应用程序,因为我试图调试的代码是在有问题的代码段之后执行的 以下是一些细节: 我正在使用Visual Studio 2012 主应用程序是一个调用我的C#代码的C++/CLI应用程

我有一个C代码,只有在调试时才会抛出ExecutionEngineeException。当我只是在VisualStudio中运行它而不进行调试(按“开始而不调试”)按钮时,这段代码工作正常。但当我从VisualStudio调试它时,它抛出ExecutionEngineeException

由于这个问题,我无法调试我的应用程序,因为我试图调试的代码是在有问题的代码段之后执行的

以下是一些细节:

  • 我正在使用Visual Studio 2012
  • 主应用程序是一个调用我的C#代码的C++/CLI应用程序
  • 应用程序运行一段时间,直到它到达C语言中有问题的代码行#
  • 相关代码是针对实体框架上下文的查询
  • 我使用的是实体框架5
  • 存储我的实体的数据库是SQL Server LocalDB(VS2012附带的数据库)
编辑

进一步的调查表明,实际问题是一个访问冲突异常,它起源于System.Data.DataSet的默认构造函数,如果我只编写
new-DataSet()
,也会发生这种情况

编辑2 我创建了一个小应用程序来演示这个问题。可以找到源代码


欢迎您编译它并尝试运行项目
应用程序
。当创建新的
数据集时,它应该在
Adder.cs
中使用
ExecutionEngineeException
崩溃。请注意,调试器应该是混合的,而不是托管的/本机的。

您的C++/CLI代码很可能会损坏垃圾收集堆。非托管代码行为异常的一种非常典型的方式。直到稍后才会发现这一点,比如当您创建一个新对象或运行垃圾收集器时。因此,崩溃的代码与导致崩溃的代码完全无关,并且不会给您任何错误所在的提示

调试这一点没有什么乐趣,通常需要彻底的代码检查、对非托管代码进行大量的单元测试以及数天的调试才能找到它。“仅在调试版本中崩溃”场景也很常见,但这并不意味着发布版本中没有堆损坏。您有点幸运,它会像这样失败,当堆损坏发生在发布版本中时,调试起来要困难得多。您需要投资一个调试分配器来捕获实际的bug,就像您从
中得到的bug一样。这个问题通常使垃圾收集器成为管理内存的首选方法


我表示哀悼并祝您好运。

您的C++/CLI代码很可能会损坏垃圾收集堆。非托管代码行为异常的一种非常典型的方式。直到稍后才会发现这一点,比如当您创建一个新对象或运行垃圾收集器时。因此,崩溃的代码与导致崩溃的代码完全无关,并且不会给您任何错误所在的提示

调试这一点没有什么乐趣,通常需要彻底的代码检查、对非托管代码进行大量的单元测试以及数天的调试才能找到它。“仅在调试版本中崩溃”场景也很常见,但这并不意味着发布版本中没有堆损坏。您有点幸运,它会像这样失败,当堆损坏发生在发布版本中时,调试起来要困难得多。您需要投资一个调试分配器来捕获实际的bug,就像您从
中得到的bug一样。这个问题通常使垃圾收集器成为管理内存的首选方法


我表示哀悼并祝您好运。

ExecutionEngineeException从何而来?stacktrace为空。根据VS,引发异常时高亮显示的行是LINQ查询本身。也没有InnerException。ExecutionEngineeException源自何处?stacktrace为null。根据VS的说法,抛出异常时高亮显示的行是LINQ查询本身。也没有InnerException。不幸的是,这次你不正确。在长时间调试我的应用程序后,我创建了一个小应用程序,只使用“新建项目”向导来演示这个问题。根本不需要重新调试。在带有.NET 4.5 RTM的Win8 RTM上使用VS2012更新1进行测试。如果这在您的计算机上崩溃,请查找环境问题。我已经安装了最新更新的win7 SP1。你说的很有趣。。。我将在一个虚拟机中测试它,关于它可能是什么有什么想法吗?不幸的是,这次你不正确。在长时间调试我的应用程序后,我创建了一个小应用程序,只使用“新建项目”向导来演示这个问题。根本不需要重新调试。在带有.NET 4.5 RTM的Win8 RTM上使用VS2012更新1进行测试。如果这在您的计算机上崩溃,请查找环境问题。我已经安装了最新更新的win7 SP1。你说的很有趣。。。我将在一个虚拟机中测试它,关于它可能是什么有什么想法吗?