如何在远程计算机上启动调试过程?

Posted

技术标签:

【中文标题】如何在远程计算机上启动调试过程?【英文标题】:How do I start the debugging process on a remote computer? 【发布时间】:2013-10-30 23:30:17 【问题描述】:

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

互联网上有很多关于如何设置远程计算机和 MSVCMON.EXE 的故事,但我找不到任何关于在我的计算机上做什么以确保我的程序在远程调试的故事当我按下 START DEBUGGING 时,计算机。

那么我应该怎么做才能使远程调试成为可能呢?

【问题讨论】:

相关帖子 - How to setup remote debugging on a machine without Visual Studio 【参考方案1】:

经过一些研究,我发现了如何做到这一点,即使您在一家存在很多防火墙等安全问题的公司工作。我唯一需要 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 中相同的名称。在我的示例中:键入 @987654325 @。 在 Visual Studio 中构建代码,设置断点并开始调试。 使用远程桌面连接来控制您的 Windows 窗体。

如果您想调试用 C# 编写的普通 Windows 窗体应用程序,此方法有效。我检测到即使您使用不安全的代码它也可以工作。如果您的程序包含 C++ 代码,则会出现一些警告,但可以忽略它们。

为此的 Microsoft 链接(2013 年 10 月工作,仍在 2015 年 8 月):

Microsoft description on how to setup remote debugging。此链接在 2017 年 6 月不再有效。

Microsoft: how to set up remote debugging。它于 2017 年 6 月工作

【讨论】:

非常有用的描述让我走上了正轨。我正在调试一个网站,我只需将“远程调试器”文件夹复制到服务器,在服务器上运行 MsvsMon.exe 程序(以管理员身份)。然后在我的本地系统上的 VS 2013 中,我只需要选择“调试/附加到进程”并将限定符字段指定为“服务器名称:4108”。然后它会列出远程服务器上的进程,我可以附加到 w3wp.exe。

以上是关于如何在远程计算机上启动调试过程?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2012 分析远程调试过程

如何以编程方式停止/启动远程计算机上的计划任务?

转: Android 设备的远程调试入门

如何使用 psexec 向远程计算机上启动的 cmd.exe 提供多个命令

以编程方式在远程计算机上安装 Windows 服务

如何使用不同的目录设置远程调试