【问题标题】:Cannot attach to process in .net 4.0无法附加到 .net 4.0 中的进程
【发布时间】:2011-03-28 12:45:36
【问题描述】:

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

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

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

我在 google 上找到了一些答案,我通常理解错误的含义,但我只是不明白一个奇怪的事实:当我编译我的简单应用程序

谷歌的答案之一是“尝试使用非侵入模式从 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

【问题讨论】:

  • 我怎么能不赞成这个:) 谢谢你的好话。
  • 经过一个小时的谷歌搜索,我在 stackoverflow 上找到了一个类似的问题答案。看到您作为回答者并检查您是否在 15 分钟前在线,我感到多么惊讶。我几乎可以肯定,你会回答这个问题;)我有没有提到,这些视频很棒而且很有帮助?继续做得很好,布赖恩。感谢您分享您的知识。

标签: .net-4.0 windbg sos


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 我试图理解,当目标.NET
  • 感谢您在 x64 平台上查看此内容。我不确定这是否只发生在我的配置上。
猜你喜欢
  • 1970-01-01
  • 2017-12-23
  • 2019-07-14
  • 1970-01-01
  • 2012-12-20
  • 2012-07-17
  • 1970-01-01
  • 2023-03-05
  • 2013-05-12
相关资源
最近更新 更多