无法附加到.net 4.0中的进程

Krz*_*ter 6 windbg .net-4.0 sos

**帖子已编辑,更多信息如下

我刚刚观看了两个关于高级Dotnet调试的精彩视频(Brian Rasmussen),我正在尝试重复一些步骤,但只是不知道如何处理tis错误:

An attempt to set a processes DebugPort or ExceptionPort was made,
but a port already exists in the process.
Run Code Online (Sandbox Code Playgroud)

我在谷歌上找到了一些答案,我一般都明白错误说的是什么,但我只是不明白一个奇怪的事实:当我编译我的简单应用程序<.NET 4.0时,我可以附加电影显示,试图做在编译目标后,相同的.NET 4.0禁止我附加.

谷歌的一个答案说"尝试使用非侵入模式从windbg附加",但是......布莱恩不使用任何这样的复选框.它只适用于他的视频.

有什么不同?捕获量在哪里?是Windows 7还是Vista?也许一些不同的编译设置很重要

我正在使用带有MS SDK的MS VS 2k10和从msdn下载的Windbg x86以及正确配置到http服务器的符号.该系统是MS Vista x86.

资源(确切时间> = 8:15):http: //channel9.msdn.com/posts/MDCC-TechTalk-Advanced-NET-Debugging-part-2

编辑: 附加到从VS运行的进程时出现错误.试图附加到运行/外部VS的进程,windbg不显示任何内容.

Edit2: Windbg在我的系统中有一些令人耳目一新的问题.使用几次"Windows\[Undock | Dock all]"菜单选项,我能够看到附加过程的内容,这是缺失的.

所以现在唯一的问题是:从VS开始连接到流程时有什么不同,当它使用目标<4.0并再次= 4.0编译时?为什么当目标4.0 windbg无法以非"非侵入"模式附加到进程时.VS 2k10有什么变化?

Bri*_*sen 8

我认为你从Visual Studio(F5)调试然后尝试附加.您一次只能有一个活动的调试器,这就是您收到此错误的原因.如果要从VS启动进程,请在不进行调试的情况下运行它(Ctrl-F5).如果你这样做,你应该能够从WinDbg附加.

编辑:对不起,我错过了关于各种版本的.NET在这方面表现不同的观点,所以让我再试一次你的问题.它在视频中"正常工作"的原因是因为我每次从VS启动时都使用run而不进行调试.因此,如果您只想按照视频中的示例进行操作,则无需调试即可运行.

我开始在CLR2和x86上使用WinDbg/SOS.从VS启动x86 .NET进程然后会触发错误,所以我养成了在没有调试的情况下启动的习惯.

但是,正如您所发现的,有些情况下您可以实际附加到VS正在调试的进程.我可以重现您描述的场景,但我也可以附加到从VS2008调试启动的x64,.NET 2进程,但如果平台设置为x86,我无法附加到同一进程.

显然,有一些我没有察觉的细微差别,它似乎并没有被完全与.NET版本,因为我还可以连接到64 .NET2过程,即使它是VS的控制之下调试器.

如果我找到其他详细信息,我会更新我的答案.