远程调试托管应用程序

时间:2013-08-02 10:01:25

标签: c# .net visual-studio debugging remote-debugging

如何从具有visual studio的其他计算机远程调试托管应用程序。这就是我的尝试:

  1. 将Visual Studio中的远程调试文件夹复制到远程计算机并运行msvsmon.exe(64位版本,因为两台计算机都是64位)。
  2. 在两台计算机上使用相同的Windows登录帐户。
  3. 然后我启动visual studio并使用attach进行处理。在传输中,我选择“默认”,在限定符中,我给出msvsmon.exe正在运行的机器的主机名。
  4. 然后按“刷新”按钮查看该计算机上的进程列表。我可以看到另一方面它说“用户xyz已连接”。但是,刷新失败,我得到以下错误: Error screen
  5. 我在这里做错了什么?我正在尝试VS2008 Pro,两个系统上的操作系统都是Windows Server 2008 R2,如果重要的话。

    注意:我可以使用远程传输调试非托管应用程序而不会出现任何问题。

5 个答案:

答案 0 :(得分:5)

即使您的计算机是64位,请确保您运行的应用程序是64位。例如,如果要在远程计算机上调试32位应用程序,则需要运行32位版本的msvsmon.exe

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

2017年更新

由于过去几年我一直在使用远程调试,我已经注意到我通常需要解决的一些问题。

  1. 确保在每台计算机上使用相同版本的msvsmon。
  2. 确保正确配置了身份验证(请先尝试进行身份验证,然后再根据需要启用身份验证)
  3. 确保在附加到进程时,您具有正确的“附加到”设置(即托管.NET版本,本机代码等)
  4. 确保msvsmon作为Admin OR运行,并且与要调试的应用程序具有相同的用户标识

答案 1 :(得分:3)

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

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

1)机器A(其中VS是)和B必须在同一个域中。 您还需要在B

上下载并安装VS Remote Debugger监视器

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

3)在A上使用域管理员帐户运行VS,您将能够远程调试。要在调试中连接到B,请使用监视器

中步骤2中显示的地址

希望它能帮到你!

答案 2 :(得分:2)

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

答案 3 :(得分:2)

不是对OP的直接回答,但可能同样有用,并且已经多次从类似情况中挖出我。

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

如果你匆忙,这可能不是一个选择,但从长远来看它值得做。

克里斯

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

答案 4 :(得分:1)

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

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

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

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

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

- 如果您将OracleVM用于虚拟PC,则网络适配器无法处于NAT模式(我使用过桥接适配器)。

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

- 如果我使用“Debug-> Attach to Process”窗口开始调试,我还需要使用“Select”按钮编辑“Attach to:” - 我需要Managed(v4.0)代码,Native code

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

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

使它工作真的很复杂,但以后节省了这么多时间......