7

如何从具有 Visual Studio 的其他机器远程调试托管应用程序。这是我尝试过的:

  1. 将作为 Visual Studio 一部分的远程调试文件夹复制到远程机器并运行msvsmon.exe(64 位版本,因为两台机器都是 64 位)。
  2. 在两台机器上使用相同的 Windows 登录帐户。
  3. 然后我启动视觉工作室并使用附加来处理。在传输中,我选择“默认”并在限定符中给出msvsmon.exe正在运行的机器的主机名。
  4. 然后我按刷新按钮查看该机器上的进程列表。我可以看到另一方面它说“用户xyz已连接”。但是,刷新失败,我收到以下错误: 错误画面

我在这里做错了什么?我正在尝试使用 VS2008 Pro,两个系统上的操作系统都是 Windows Server 2008 R2,如果重要的话。

注意:我可以使用远程传输毫无问题地调试非托管应用程序。

4

5 回答 5

5

即使您的机器是 64 位的,请确保您正在运行的应用程序是 64 位的。例如,如果您在远程计算机上调试 32 位应用程序,您可能希望运行 32 位版本的 msvsmon.exe

这可能不是答案,但需要检查以确保。

2017年更新

由于在过去几年中我一直在使用远程调试,因此我注意到了一些我通常必须解决的问题。

  1. 确保在每台机器上使用相同版本的 msvsmon。
  2. 确保正确配置了身份验证(先尝试不进行身份验证,然后在需要时将其打开)
  3. 确保当您附加到进程时,您具有正确的“附加到”设置(即托管 .NET 版本、本机代码等)
  4. 确保 msvsmon 以管理员身份运行或以与您要调试的应用程序相同的用户身份运行
于 2013-08-08T19:02:50.520 回答
3

我也为此浪费了很多时间。我发现让它 100% 工作的唯一方法是使用相同的域。使用 VS2012,无需在同一个域中即可更轻松地进行连接。

但是对于 2008 年,这对我有用(A = VS 侧,B = 没有 VS 的机器)

1)机器A(VS在哪里)和B必须在同一个域中。您还需要在 B 上下载并安装 VS Remote Debugger monitor

2)您需要在B端启动VS Remote调试器监视器,以允许传入连接。当您第一次启动它时,它将配置防火墙以打开端口。它还会向您显示它正在侦听的地址,即 DOMAIN\User@hostname_B

3)在A上用域管理员账号运行VS,就可以远程调试了。要在调试中连接到 B,请使用监视器在步骤 2 中显示的地址

希望对你有帮助!

于 2013-08-05T12:37:40.513 回答
2

不是对 OP 的直接回答,但可能同样有用,并且多次让我摆脱了类似的情况。

我建议考虑安装WinDBG(或类似的),确保你有正确的符号 \ 代码设置使用它来调试。WinDBG 的学习曲线相当陡峭,但我相信它是值得的,即使在非常高的水平上也是如此。它非常轻量级,这意味着它在原始帖子的上下文中很有用 + 也可用于生产等,而安装类似 VS 的东西通常不是一个选项。

如果您赶时间,这可能不是一个选择,但从长远来看,这是值得的。

克里斯

PS:网上有一些很好的课程,尤其是在 Pluralsight 之类的网站上(我没有任何关系,除了是一个快乐的客户)

于 2013-08-11T20:08:30.670 回答
2

从 Visual Studio 2012 开始,您可以使用远程(无身份验证)传输来调试托管代码(以前 VS 只允许在远程模式下调试本机代码)。

于 2013-08-05T12:00:47.747 回答
1

我花了很多时间来完成这项工作。但我成功了,现在可以完全调试我的托管应用程序。我按照此任务列表使其工作:

- 将目标 PC 添加到域并使用与在 PC 上使用 Visual Studio 相同的帐户登录。

- 运行正确的 Visual Studio 远程调试器 (msvsmon.exe),我使用 2010 版本。

- 关闭目标 PC 上的防火墙。

- 为开发计算机上的 devenv.exe (Visual Studio exe) 添加 Windows 防火墙例外。

- 如果您使用 OracleVM 进行虚拟 PC,网络适配器不能处于 NAT 模式(我使用桥接适配器)。

- 要使用的调试地址是:DOMAIN\USER@PCNAME(例如 MyGreatDomain\Myself@DEBUGPC)。

- 如果我使用“调试->附加到进程”窗口开始调试,我还需要使用“选择”按钮来编辑“附加到:” - 我需要托管 (v4.0) 代码、本机代码。

-pdb 文件必须位于我用来运行我的 exe 的同一目录中。我将带有我的 exe 和 pdb 的目录直接映射到目标计算机。

- 在 Visual Studio 中,我还必须转到 Tools->Options,展开 Debugging->General。并取消选中仅启用我的代码(仅限托管)。

让它工作起来真的很复杂,但它节省了很多时间......

于 2014-07-29T09:45:39.830 回答