0

.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 的哪些变化导致我的应用程序在启动时引发访问冲突?

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

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

4

2 回答 2

1

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

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

于 2011-05-31T04:28:05.353 回答
1

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

于 2012-07-02T11:22:25.103 回答