.net 4调试api会导致debugee中的访问冲突

时间:2011-04-13 11:52:29

标签: .net-4.0 debugging com-interop access-violation mixed-mode

.net 4调试api有什么办法可以在启动时以某种方式破坏应用程序的状态吗?

我遇到的问题如下:

  • 如果我使用.net调试api(visual studio 2010,sharp develop 4,mdbg)在调试器中启动我的应用程序,我会收到各种随机访问冲突。
  • 如果我从不使用.net调试api的调试器中启动我的应用程序(delphi 2007,带有sos扩展名的windbg)一切正常。
  • 如果我直接启动我的应用程序,稍后再附加一个调试器(如visual studio 2010,sharp develop 4,mdbg,delphi 2007,windbg),一切正常。
  • 如果我回到.net 3.5和clr 2.0,我完全没有问题。

那么在托管调试api中从.net 3.5更改为4.0导致我的应用程序在启动时抛出访问冲突?

应用程序使用managed vcl以delphi(非托管)和c#(托管)编写,以进行互操作。

我很难给出任何重现这个问题的例子,所以我知道回答这个问题可能是不可能的,但是如果对调试api更有洞察力的人可以给我一个正确方向的提示或者可以帮我缩小范围我真的很感激。

2 个答案:

答案 0 :(得分:1)

只是为了好玩,尝试并禁用Visual Studio托管过程。在Visual Studio中右键单击项目,转到“调试”选项卡,然后取消选中“启用Visual Studio管理过程”复选框。

我们在运行32位应用程序的64位系统上的托管/非托管域中看到了一些奇怪的东西。

答案 1 :(得分:1)

基于经验的一些其他信息:使用COMPLUS_MDA 环境变量非常重要(记得以后重新启动VS2010),而不是MDA 注册表项。我尝试设置注册表项(然后重新启动计算机),如MSDN文章http://msdn.microsoft.com/en-us/library/d21c150d所述,因为文章指出这应该有相同的结果,但是没有用。