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

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

远程调试器组件

有关远程调试通用 Windows 应用(UWP)的信息,请参阅 调试已安装的应用包

要求

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

备注

不支持在通过代理连接的两台计算机之间进行调试。 不建议在高延迟或低带宽的连接(例如拨号上网)或跨国/地区的互联网连接上进行调试,因为可能会失败或速度慢到无法接受。

下载并安装远程工具

在要调试的远程设备或服务器上,而不是 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<版本>\Common7\IDE\Remote Debugger\x64
版本 链接 笔记
Visual Studio 2022 远程工具 与所有 Visual Studio 2022 版本兼容。 下载与设备操作系统(x86、x64(AMD64)或 ARM64 匹配的版本。 在较旧版本的 Windows Server 上,请参阅 取消阻止文件下载 以获取有关下载远程工具的帮助。
Visual Studio 2019 远程工具 Visual Studio 2019 的远程工具可从 My.VisualStudio.com 获取。 如果系统提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 下载与设备操作系统(x86、x64(AMD64)或 ARM64 匹配的版本。 在较旧版本的 Windows Server 上,请参阅 取消阻止文件下载 以获取有关下载远程工具的帮助。
Visual Studio 2017 远程工具 Visual Studio 2017 的远程工具可从 My.VisualStudio.com 获取。 如果系统提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 下载与设备操作系统(x86、x64(AMD64)或 ARM64 匹配的版本。 在 Windows Server 上,请参阅 取消阻止文件下载 以获取有关下载远程工具的帮助。
Visual Studio 2015 远程工具 Visual Studio 2015 的远程工具可从 My.VisualStudio.com 获取。 如果系统提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 在 Windows Server 上,请参阅 取消阻止文件下载 以获取有关下载远程工具的帮助。
Visual Studio 2013 远程工具 Visual Studio 2013 文档中的“下载”页
Visual Studio 2012 远程工具 Visual Studio 2012 文档中的“下载”页
版本 链接 笔记
Visual Studio 2019 远程工具 与所有 Visual Studio 2019 版本兼容。 下载与设备操作系统(x86、x64(AMD64)或 ARM64 匹配的版本。 在 Windows Server 上,请参阅 取消阻止文件下载 以获取有关下载远程工具的帮助。 对于最新版本的远程工具,请打开 Visual Studio 2022 文档
Visual Studio 2017 远程工具 与所有 Visual Studio 2017 版本兼容。 下载与设备操作系统(x86、x64(AMD64)或 ARM64 匹配的版本。 在 Windows Server 上,请参阅 取消阻止文件下载 以获取有关下载远程工具的帮助。
Visual Studio 2015 远程工具 Visual Studio 2015 的远程工具可从 My.VisualStudio.com 获取。 如果系统提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 在 Windows Server 上,请参阅 取消阻止文件下载 以获取有关下载远程工具的帮助。
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:端口号
    连接 远程访问使用 Windows 身份验证
    调试器类型 仅限本机
    部署目录 C:\remotetemp
    要部署的其他文件 $(ProjectDir)\data

    如果部署其他文件夹,并且希望文件夹中的所有文件都部署到同一文件夹,请指定文件夹名称。

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

  6. 在解决方案资源管理器中,右键单击该解决方案并选择 Configuration Manager

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

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

  8. 启动调试(调试 > 启动调试,或 F5)。

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

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

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

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

    提示

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

    如果应用程序需要非代码文件,可以在 调试器 属性页上,使用分号分隔的列表在 部署的额外文件 中指定这些文件,并选择 远程 Windows 调试器

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

使用远程符号设置调试

应该能够使用在 Visual Studio 计算机上生成的符号调试代码。 使用本地符号时,远程调试器的性能要好得多。

如果必须使用远程符号,则需要在 Visual Studio 中指定远程符号,这可以通过在 工具 > 选项 > 调试 > 符号中,将 Windows 文件共享添加到符号搜索路径来实现。