天天看点

使用VS2015进行远程调试概述命令行安装

概述

通过远程调试,可以对运行 Visual Studio 的计算机之外的计算机上运行的程序进行调试。

通过此版本的 Visual Studio,远程调试变得前所未有的容易。基本步骤:

  1. 在要进行调试的计算机上运行远程调试器(msvsmon.exe)。 有关详细信息,请参阅 设置帮助。
  2. 配置 Visual Studio 以连接到远程调试器
    • 如果要启动 C#/VB 项目: 打开项目的属性(在解决方案资源 管理器中右击),然后在“调试”选项卡上,选中使用远程计算机的选项。
    • 如果要启动 C++ 项目: 打开项目的属性(在解决方案资源 管理器中右击),然后在“调试器”菜单上,将“要启动的调试器”值更改 为“远程 Windows 调试器”。将“远程命令”属性设置为远程计算机应 使用的路径。
    • 附加到已运行的进程: 从“工具”或“调试”菜单 启动“附加到进程”对话框,然后在“限定符”编辑框中输入远程计算机 名称。
    • 调试网站: 从远程文件共享打开网站,然后将 “自定义 Web 服务器”属性配置为 Web 服务器的 URL(例如: http://myserver)。
    • 启动不带项目的可执行文件: 创建调试器项目,具体方法是将 可执行文件作为项目打开(“文件”->“打开项目”),并输入要调试的可执行 文件的路径(例如: \\MyTestComputer\c$\MyTest.exe)。然后打开项目属性 并更改“连接”属性。另外将“可执行文件”属性更改为远程 计算机应使用的路径。
  3. 启动调试

随着 Visual Studio 2015 的发布,远程调试功能已得到大大改进。 许多之前难以实现或不可能实现的方案现在均能实现。

重要功能:

  • 现在完全支持从一个 Windows 域对另一个域或工作组进行 远程调试。
  • Visual Studio 现在允许在连接到远程计算机时指定用户 凭据。
  • 远程调试现在使用单个 TCP/IP 端口,可以配置端口号。 这样便可以通过防火墙或是跨 Windows 域进行远程调试。
  • 性能得到了显著改进。
  • 托管和本机远程调试都可以使用“无身份验证” 传输。因此,现在可以对所有版本的 Windows 进行远程调试。 以前版本的远程调试器限制于支持 Windows 身份验证 的较高端版本 Windows。
  • 在进行托管远程调试时,无需将符号复制到远程计算机。
  • x64 版本的 msvsmon.exe 现在可以调试 x86 和 x64 进程。
  • 现在可以远程调试 JavaScript

要注意的另一个变化是不再建议使用服务器名称 (例如: MyDomain\[email protected])。而是远程调试器的每个实例都侦听 一个 TCP/IP 端口,此端口号可以用于标识远程调试器 实例(例如: MyComputer:4016)。

命令行

所有远程调试器命令行选项的说明

选项 说明
/allow user_name 允许指定用户连接到远程调试器。应当仅允许完全信任的 用户进行调试。如果授予恶意用户连接权限, 他们就能够接管运行远程调试器的用户的 用户帐户。用户名应使用分号或逗号隔开(例如: SomeDomain\Bob;SomeDomain\Alice)
/port port_number 更改远程调试器侦听的 TCP/IP 端口号。此选项通常 用于允许远程调试器的多个实例 在同一台计算机上运行。

/wow64port port_number

(仅限 Windows x64)

在 Windows x64 上,远程调试器侦听其他端口,以允许调试在 WOW64 (Windows 64 位上的 Windows 32 位)仿真层下运行的 32 位进程。通过 /wow64port 选项 可以配置此端口号。这可以用于适应硬件防火墙。 如果未指定,则调试器会尝试使用 4017,但是如果 4017 已使用,则会回退到 任何未使用的端口。

请注意,建议不要要求 Visual Studio 直接连接到此端口,因为这样仅 允许调试 32 位进程。相反,如果 Visual Studio 连接到主端口(请参阅 /port), 则会在需要时自动切换到 32 位端口。

/timeout number_of_seconds 配置远程调试器在无用户连接时在退出之前 等待的秒数。在 Windows 身份验证模式下,默认的超时时间为无限。 在无身份验证模式中,默认的超时时间为 15 分钟。
/noauth 将远程调试器从 Windows 身份验证模式切换到无身份验证 模式。有关详细信息,请参阅安全性。
/anyuser 在无身份验证模式下,Visual Studio 将当前用户的用户名发送到 远程调试器。远程调试器使用此用户名进行安全检查, 以防用户意外连接到其他用户的远程调试器。 此选项禁用安全检查,以便任何用户都可以连接。
/nostatus 启动远程调试器,且隐藏状态窗口。可以通过远程 调试器的系统栏图标显示状态窗口。
/nodiscovery 在禁用发现的情况下启动远程调试器。此远程调试器实例 不会出现在 Visual Studio 的“查找远程调试器实例”对话框中。
/silent 通知远程调试器不要显示用户界面。
/prepcomputer [选项]

为进行远程调试准备好此计算机,具体方法是确保 Web 服务 API 已安装,并且 Windows 防火墙已配置。若要使用 /prepcomputer,应以管理员身份 启动 msvsmon。

可以与 /prepcomputer 一起传递几个其他开关。

常规选项:

/quiet : 会取消显示错误对话框(或其他阻止 UI)。 msvsmon.exe 进程的退出代码会指示任何错误。

/nofirewall : 不应配置防火墙

防火墙配置文件选项:

/domain : 启用域网络,如工作场所网络

/private : 启用专用网络,如我的家庭或工作网络

/public : 启用公用网络,如机场和咖啡店里的网络

如果未提供配置文件选项,则会配置所有配置文件。

/ntlm

默认情况下,远程调试器与可以在 Visual Studio 计算机与远程调试器计算机 之间使用的最强 Windows 身份验证提供程序 协商。现在,如果两台计算机在同一个域中,则通常 是 Kerberos 身份验证。这样做是为了提供尽可能最好的安全性。

“/ntlm”选项指示远程调试器改用 NTLM 身份验证 提供程序。通常不建议使用此选项。但是,在 Kerberos 无法进行身份验证的 情况下,它非常有用。

/hostname hostname_value 指示远程调试器使用指定主机名值或 IP 地址值 侦听网络。在具有多个网卡或多个已分配 DNS 主机名 的计算机上,此选项可以用于限制其中哪些 允许进行远程调试。例如,某个服务器可能具有一个面向 Internet 的地址和 一个内部地址。通过使用“/hostname private_ip_address”,将不能通过 面向 Internet 的地址使用远程调试器。
/noclrwarn 远程调试器尝试加载 2.0 公共语言运行时(CLR)。此选项 禁止在安装的 CLR 不兼容时显示警告。如果 不想调试托管代码,则此选项很有用。
/nosecuritywarn 在使用“/noauth”或“/allow”命令行选项时,远程调试器通常 会显示警告,因为这两个选项都有危险,使用时需要 小心。“/nosecuritywarn”将禁止显示这些警告。只有在您了解 了“/noauth”和“/allow”选项的安全含义以后,才能使用此选项。
/nofirewallwarn 在 Windows 防火墙阻止远程调试时不发出警告。
/nowowwarn 64 位版本的 Windows 能够运行 32 位应用程序。这种技术 称为“WOW”。当远程调试器在 WOW 下运行时,无法附加到 64 位进程。此选项禁止检查此情况。
/name server_name (弃用)使远程调试器除了 TCP/IP 端口之外,还侦听指定 服务器名称。Visual Studio 可以通过 <server_name>@<computer_name> 语法,使用此服务器名称进行 连接。使用此选项时,远程计算机必须允许文件共享访问。 不建议使用此选项,此选项只是为了向后兼容才提供的。

安装

可通过多种方式安装远程调试。

从文件共享运行远程调试器

对于许多方案,安装远程调试的最简单方式是从文件共享 运行远程调试器(msvsmon.exe)。Visual Studio 将 msvsmon.exe 安装到 以下目录中:

Program Files\Microsoft Visual Studio 11.0\Common7\IDE\Remote Debugger\x86
 Program Files\Microsoft Visual Studio 11.0\Common7\IDE\Remote Debugger\x64
 Program Files\Microsoft Visual Studio 11.0\Common7\IDE\Remote Debugger\arm
          

通过共享 Visual Studio 计算机上的“Remote Debugger”目录, 可以在远程计算机上运行 msvsmon.exe。

如果 msvsmon.exe 从共享位置运行,则以下功能不起作用:

  • 正在启动 Windows 应用商店应用程序。不过,仍然可以手动附加。
  • JavaScript 调试
  • 单步执行 Web 服务。但是,仍然可以手动附加。
  • 自动在调试器下启动 ASP.NET 站点。仍然可以 手动附加。

在远程计算机上运行远程调试器安装程序

  1. 将 Visual Studio DVD 插入远程计算机中。
  2. 导航到 DVD 上的“远程工具”文件夹。
  3. 在“远程工具”文件夹下,每个处理器 架构均有一个对应的安装程序,即,rtools_setup_x86.exe、rtools_setup_x64.exe 和 rtools_setup_arm.exe (仅支持的 SKU)。选择与您的计算机处理器匹配的安装程序。
  4. 启动安装程序,然后按照说明完成安装。

1.复制远程调试器到需要调试的电脑上并运行msvsmon.exe

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Remote Debugger\x64

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Remote Debugger\x86

使用VS2015进行远程调试概述命令行安装

工具->选项,可以配置远程调试的端口和可以进行调试的权限。

使用VS2015进行远程调试概述命令行安装

在安全的网络环境中或者短期的调试场合,可以设置无身份认证【允许任何用户进行调试】

这样可以避免因权限不足无法进行调试。

2.打开解决方案

配置生成路径到远程电脑共享文件夹

使用VS2015进行远程调试概述命令行安装

3.配置工作目录和远程调试,到远程电脑共享文件夹

使用VS2015进行远程调试概述命令行安装

说明:

完成以上配置即可进行远程调试,说明调试的电脑不需要安装VS2015。

调试过程比本机调试慢

必须配置共享文件夹的读写权限

共享文件夹的访问权限,确保为EveryOne的可读写

继续阅读