gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:34:24 24 4
gpt4 key购买 nike

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

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

An attempt to set a processes DebugPort or ExceptionPort was made,
but a port already exists in the process.

我在 google 上找到了一些答案,我通常明白错误的含义,但我只是不明白一个奇怪的事实:当我编译我的简单应用程序 <.NET 4.0 时,我可以像电影显示的那样附加,尝试执行在我编译目标 .NET 4.0 后,我无法附加。

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

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

我正在使用 MS VS 2k10 和 MS SDK,从 msdn 下载 Windbg x86,符号正确配置到 http 服务器。系统为 MS Vista x86。

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

编辑:
附加到从 VS 运行的进程时显示错误。尝试附加到在 VS 外部运行的进程时,windbg 不显示任何内容。

编辑 2:
Windbg 在我的系统中有一些令人耳目一新的问题。使用几次“Windows\[Undock | Dock all]”菜单选项,我能够看到缺少的附加进程的内容。

所以现在唯一的问题是:当附加到从 VS 启动的进程时,当它使用 target < 4.0 和再次 = 4.0 编译一次时有什么区别?为什么当以 4.0 为目标时,windbg 无法以非“非侵入性”模式附加到进程。 VS 2k10 有什么变化?

最佳答案

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

编辑 :很抱歉,我忽略了 .NET 的各种版本在这方面的行为不同的观点,所以让我再次尝试解决您的问题。它在视频中“正常工作”的原因是因为我每次从 VS 启动时都使用运行而不进行调试。因此,如果您只是想按照视频中的示例进行操作,那么您需要做的就是在不调试的情况下运行。

我开始在 CLR2 和 x86 上使用 WinDbg/SOS。那时从 VS 启动 x86 .NET 进程会触发错误,所以我养成了直接启动而不调试的习惯。

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

显然有一些我没有意识到的细微差别,它似乎与 .NET 版本无关,因为我可以附加到 x64 .NET2 进程,即使它在 VS 的控制之下调试器。

如果我找到更多详细信息,我会更新我的答案。

关于.net-4.0 - 无法附加到 .net 4.0 中的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5459171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com