在 Visual Studio 中远程调试 C++ 项目

若要调试其他计算机上的 Visual Studio 应用程序,请在将要部署应用的计算机上安装和运行远程工具,将项目配置为从 Visual Studio 连接到远程计算机,然后部署和运行应用。

远程调试器组件

如需详细了解如何远程调试通用 Windows 应用 (UWP),请参阅调试已安装的应用包

要求

Windows 7 和更高版本以及从 Windows Server 2008 Service Pack 2 开始的 Windows Server 版本支持远程调试器。 有关要求的完整列表,请参阅要求

注意

不支持在通过代理连接的两台计算机之间进行调试。 不建议通过高延迟或低带宽连接(如拨号 Internet)或跨国家/地区的 Internet 进行调试,否则可能会导致调试失败或速度过慢。

下载和安装远程工具

在要调试的远程设备或服务器上(而不是 Visual Studio 计算机上),请从下表中的链接下载并安装正确的远程工具版本。

  • 下载适合 Visual Studio 版本的最新远程工具。 最新的远程工具版本与早期的 Visual Studio 版本兼容,但早期的远程工具版本与后来的 Visual Studio 版本不兼容。 (例如,如果使用的是 Visual Studio 2019,请下载 Visual Studio 2019 远程工具的最新更新。在这种情况下,请不要下载 Visual Studio 2022 远程工具。)
  • 下载与要安装远程工具的计算机具有相同体系结构的远程工具。 例如,如果要在运行 64 位操作系统的远程计算机上调试 32 位应用,请安装 64 位远程工具。
  • 如果要在 ARM64 设备上远程调试 ARM64EC 应用程序,请安装 ARM64 远程工具,然后启动随这些工具一起安装的 x64 远程调试器。 可在以下位置找到:Program Files (x86)\Microsoft Visual Studio<version>\Common7\IDE\Remote Debugger\x64。
版本 链接 说明
Visual Studio 2022 远程工具 兼容所有 Visual Studio 2022 版本。 下载与设备操作系统(x86、x64 (AMD64) 或 ARM64)匹配的版本。 在较旧版本的 Windows 服务器上,请参阅取消阻止文件下载,获取有关下载远程工具的帮助。
Visual Studio 2019 远程工具 Visual Studio 2019 的远程工具可从 My.VisualStudio.com 获取。 如果出现提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 下载与设备操作系统(x86、x64 (AMD64) 或 ARM64)匹配的版本。 在较旧版本的 Windows 服务器上,请参阅取消阻止文件下载,获取有关下载远程工具的帮助。
Visual Studio 2017 远程工具 Visual Studio 2017 的远程工具可从 My.VisualStudio.com 获取。 如果出现提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 下载与设备操作系统(x86、x64 (AMD64) 或 ARM64)匹配的版本。 在 Windows 服务器上,请参阅取消阻止文件下载,获取有关下载远程工具的帮助。
Visual Studio 2015 远程工具 Visual Studio 2015 的远程工具可从 My.VisualStudio.com 获取。 如果出现提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 在 Windows 服务器上,请参阅取消阻止文件下载,获取有关下载远程工具的帮助。
Visual Studio 2013 远程工具 Visual Studio 2013 文档中的下载页面
Visual Studio 2012 远程工具 Visual Studio 2012 文档中的下载页面
Version 链接 说明
Visual Studio 2019 远程工具 兼容所有 Visual Studio 2019 版本。 下载与设备操作系统(x86、x64 (AMD64) 或 ARM64)匹配的版本。 在 Windows 服务器上,请参阅取消阻止文件下载,获取有关下载远程工具的帮助。 有关最新版远程工具的信息,请打开 Visual Studio 2022 文档
Visual Studio 2017 远程工具 兼容所有 Visual Studio 2017 版本。 下载与设备操作系统(x86、x64 (AMD64) 或 ARM64)匹配的版本。 在 Windows 服务器上,请参阅取消阻止文件下载,获取有关下载远程工具的帮助。
Visual Studio 2015 远程工具 Visual Studio 2015 的远程工具可从 My.VisualStudio.com 获取。 如果出现提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 在 Windows 服务器上,请参阅取消阻止文件下载,获取有关下载远程工具的帮助。
Visual Studio 2013 远程工具 Visual Studio 2013 文档中的下载页面
Visual Studio 2012 远程工具 Visual Studio 2012 文档中的下载页面

可以通过将 msvsmon.exe 复制到远程计算机,而不是安装远程工具来运行远程调试器。 但是,远程调试器配置向导 (rdbgwiz.exe) 仅在安装远程工具时才可用。 如果要将远程调试器作为服务运行,则可能需要使用向导进行配置。 有关详细信息,请参阅(可选)将远程调试器配置为服务

注意

  • 若要在 ARM 设备上调试 Windows 10 或更高版本应用,请使用 ARM64,它可用于最新版本的远程工具。
  • 若要在 Windows RT 设备上调试 Windows 10 应用,请使用 ARM,它仅在 Visual Studio 2015 远程工具下载中可用。

提示

在某些情况下,从文件共享运行远程调试器可能是最有效的方法。 有关详细信息,请参阅从文件共享运行远程调试器

设置远程调试器

  1. 在远程计算机上,从“开始”菜单中查找并启动“远程调试器” 。

    如果你没有远程计算机的管理权限,请右键单击“远程调试器”应用,然后选择“以管理员身份运行” 。 否则,正常启动即可。

    如果打算附加到以管理员身份运行或在其他用户帐户(如 IIS)下运行的进程,请右键单击“远程调试器”应用,然后选择“以管理员身份运行” 。 有关详细信息,请参阅以管理员身份运行远程调试器

  2. 首次启动远程调试器时(或在配置它之前),会显示“远程调试配置”向导。

    在大多数情况下,请选择“下一步”,直到最后到达该向导的“配置 Windows 防火墙”页。

    远程调试器配置的屏幕截图。

    远程调试器配置的屏幕截图。

    如果未安装 Windows Web 服务 API(仅会在 Windows Server 2008 R2 上发生这种情况),请选择“安装”按钮。

  3. 请至少选择一种要对其使用远程工具的网络类型。 如果这些计算机通过域连接,则必须选择第一项。 如果这些计算机通过工作组或家庭组连接,请根据需要选择第二或第三项。

    接下来,选择“完成”以启动远程调试器。

    接下来,选择“配置远程调试”以启动远程调试器。

  4. 配置完成后,将显示“远程调试器”窗口

    远程调试器窗口的屏幕截图

    远程调试器窗口的屏幕截图

    远程调试器正在等待连接。 使用显示的服务器名称和端口号在 Visual Studio 中设置远程连接配置。

若要停止远程调试器,请选择“文件”>“退出” 。 你可以从“开始”菜单或通过以下命令行重新启动它:

<Remote debugger installation directory>\msvsmon.exe

注意

如果需要为其他用户添加权限,请更改远程调试器的身份验证模式或端口号,请参阅配置远程调试器

远程调试 C++ 项目

在下面的过程中,项目的路径是 C:\remotetemp,且远程计算机的名称是 MySurface。

  1. 创建名为 CppConsoleApp 的 C++ 控制台应用程序

  2. 在应用程序中容易到达的地方设置断点,例如,在 CppConsoleApp.cpp 中(main 函数中)。

  3. 在“解决方案资源管理器”中,右键单击该项目并选择“属性”。 打开“调试”选项卡。

  4. 将“要启动的调试器”更改为“远程 Windows 调试器” 。

    Visual Studio 解决方案资源管理器属性中“调试”选项卡的屏幕截图。“要启动的调试器”属性设置为“远程 Windows 调试器”。

  5. 对属性进行以下更改:

    设置 “值”
    远程命令 C:\remotetemp\CppConsoleApp.exe
    工作目录 C:\remotetemp
    远程服务器名称 MySurface:portnumber
    连接 带 Windows 身份验证的远程访问
    调试器类型 仅限本机
    部署目录 C:\remotetemp
    其他要部署的文件 $(ProjectDir)\data

    如果要部署其他文件夹,且想将某个文件夹中的所有文件部署到同一文件夹,请指定文件夹名称。

    有关属性的详细信息,请参阅 C++ 调试配置的项目设置

  6. 在“解决方案资源管理器”中,右键单击解决方案,然后选择“配置管理器”。

  7. 对于“调试”配置,请选中“部署”复选框 。

    Visual Studio 解决方案资源管理器中的“配置管理器”的屏幕截图。其中选中了“调试”配置和“部署”。

  8. 开始调试(单击“调试”>“开始调试”,或按 F5)。

  9. 可执行文件会自动部署到远程计算机。

  10. 如果出现提示,请输入网络凭据以连接到远程计算机。

    所需的凭据特定于网络的安全配置。 例如,在域计算机上,你可以选择安全证书或输入域名和密码。 在非域计算机上,可以输入计算机名和有效用户帐户名(如 MySurface\name@something.com)以及正确的密码。

  11. 在 Visual Studio 计算机上,你应看到在断点处已停止执行。

    提示

    或者,你可以采用单独的步骤部署文件。 在“解决方案资源管理器”中,右键单击项目节点,然后选择“部署”。

    如果你有应用程序所需的非代码文件,则可以在“远程 Windows 调试器”页面上的“要部署的其他文件”中以分号分隔列表形式指定它们 。

    或者,可以在项目中包括文件,并在每个文件的“属性”页中将“内容”属性设置为“是” 。 将这些文件复制到“远程 Windows 调试器”页上指定的“部署目录” 。 如果需要将文件复制到“部署目录”的子文件夹,还可以将“项类型”更改为“复制文件”并指定其他属性 。

使用远程符号设置调试

你应能够使用你在 Visual Studio 计算机生成的符号调试你的代码。 使用本地符号时远程调试器的性能更佳。

如果必须使用远程符号,需要通过向“工具”>“选项”>“调试”>“符号”中的符号搜索路径添加 Windows 文件共享,在 Visual Studio 中指定远程符号。