如何在远程计算机上开始调试过程?

14

我正在为一个用C#编写的标准Windows Forms应用程序设置Visual Studio远程调试会话。

互联网上有很多关于如何设置远程计算机和MSVCMON.EXE的故事,但我找不到任何关于在我自己的计算机上要做什么才能确保当我按下“开始调试”时,我的程序可以在远程计算机上进行调试的故事。

那么,我应该怎么做才能实现远程调试呢?


1个回答

21

经过一些研究,我找到了如何做到这一点,即使您在一个有很多防火墙等安全问题的公司工作。我需要从IT部门获得的唯一东西是两台计算机的管理员权限。

先决条件:

  • 我在Visual Studio 2012 Professional中使用了这种方法,并在几年后又在Visual Studio 2013 Ultimate中进行了测试。
  • 本地计算机和远程计算机都在同一个域中。
  • 我以域成员身份登录。

如何做到这一点:

  • 在远程计算机上:使用您的普通账户登录。如果这是为您创建新环境的第一次。
  • 在远程计算机上:确保您拥有管理员权限。
  • 在远程计算机上:启用远程桌面。
  • 在本地计算机上查找Visual Studio的远程调试文件夹。
  • 在我的计算机上,它是:"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Remote Debugger"
  • 将此文件夹复制到远程计算机上类似(可查找)的文件夹中。
  • 在远程计算机上运行来自复制文件夹的MsvsMon.exe。
  • 第一次运行时,它将进行一些安装。让它更改防火墙。
  • 使用“工具选项” - “Windows身份验证”
  • 使用“工具权限”确保您是具有调试权限的用户。

Msvsmon.exe程序现在应该正在等待新的连接。服务器的名称类似于“远程计算机名称”:“端口号”,例如Prototype1:4016

现在,在将使用Visual Studio开发程序的本地计算机上执行以下操作:

  • 打开Visual Studio,并加载解决方案。
  • 如果还没有这样做,请设置启动项目(右键单击启动项目并选择启动为启动项目)。
  • 启动配置管理器(单击调试/发布选择下拉框旁边的箭头并选择配置管理器...)。
  • 在配置管理器的“活动解决方案配置”中选择新项。给新配置一个合适的名称,并将其复制自Debug(可能)。
  • 当为远程调试创建代码时,您将需要选择新配置。
  • 必须更改此新配置的某些设置。例如,您必须确保构建后的结果代码位于远程计算机上。最简单的方法是双击启动项目的属性,然后选择生成选项卡。将输出路径从 bin \ debug 更改为远程计算机上您想要代码的位置。例如:\\Prototype1\Users\Harald\Documents\CameraTestProgram\
  • 在相同的属性窗格中,在调试选项卡上,选择应进行调试会话的计算机:勾选“使用远程计算机”,并填写与MsvsMon.exe中相同的名称。例如,在我的示例中:输入 Prototype1:4016
  • 在Visual Studio中构建您的代码,设置断点并开始调试。
  • 使用远程桌面连接来控制您的Windows窗体。
  • 如果您想要调试用C#编写的普通Windows Forms应用程序,则此方法有效。我发现即使在使用不安全代码时也可以使用此方法。但是,如果您的程序包含C++代码,则会出现一些警告,但可以忽略它们。

    Microsoft提供了相关的链接(截至2013年10月有效,到2015年8月仍有效):


    1
    非常有帮助的描述,让我找到了正确的方向。我在调试网站时只需要将“Remote Debugger”文件夹复制到服务器上,在服务器上作为管理员运行MsvsMon.exe程序。然后在我的本地系统中的VS 2013中,我只需要选择“调试/附加到进程”,并将限定符字段指定为“servername:4108”。它会列出远程服务器上的进程,然后我就可以附加到w3wp.exe上了。 - RonnBlack

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接