考虑以下情况:
我们在客户端机器上部署了一个 Web 应用程序,客户端报告了一个错误。然后我们尝试在我们的本地环境(代码存在的地方)中复制问题,但未能成功。现在有两种调试客户端安装的方法——通过日志文件或通过 Visual Studio 调试模式。如果我们的日志记录不详细,我们将在故障排除方面做噩梦。另一种选择是在服务器机器上安装 Visual Studio(这不是一个好主意)。
为了解决这个远程调试问题,我们可以使用一个叫做远程调试监视器(MSVSMON.EXE)的小工具。它允许您从运行 Visual Studio 的另一台计算机(本地开发环境)运行、调试和测试在一台设备(客户端计算机)上运行的应用程序。
先决条件:
远程设备和 Visual Studio 计算机必须通过网络连接或通过以太网电缆直接连接。不支持通过 Internet 进行调试。
远程设备必须运行远程调试组件。
您必须是管理员才能在远程设备上安装远程调试器。要与远程调试器通信,您必须具有远程设备的用户访问权限。
安装:
- 从Microsoft 下载中心下载 Visual Studio Remote Debugger 安装程序。在远程设备上运行与操作系统(x86、x64、ARM)匹配的安装程序(客户端机器 - 请记住,您需要管理员权限才能安装它)。
- 首次安装并启动远程调试器后 - 出现配置远程调试对话框
- 如果未安装 Windows 服务 API,请选择安装按钮。
- 选择您希望远程调试器与之通信的网络类型。必须至少选择一种网络类型。
- 要更改身份验证模式或指定远程调试器的超时值,请选择远程调试监视器工具菜单上的选项。
(您可以选择在 No Authentication 模式下运行远程调试器,但强烈建议不要使用此模式。在此模式下运行时没有网络安全性。只有在确定网络没有风险时才选择 No Authentication 模式来自恶意或敌对流量。)
- 默认情况下,远程设备的管理员可以连接到远程调试器。要授予或拒绝其他用户使用远程调试器的权限,请在工具菜单上选择权限。
指示:
在连接到客户端计算机之前,首先在客户端 PC 上启动一个工作进程。要启动您需要运行应用程序的工作进程,IIS 将完成其余的工作。
启动后,打开开发原始代码的 Visual Studio 实例并导航到Debug -> Attach to Process
默认情况下,这会列出在本地机器上运行的进程。
要连接到远程服务器的进程,请在限定符字段(可编辑字段)中输入机器名称。可以从远程调试监视器获得此详细信息。一旦远程调试监视器(MSVSMON.EXE) 启动,它就会显示机器名称和端口号。
如果您在域外访问远程调试监视器,它将提示进行身份验证。授权基于远程调试监视器中配置的权限(在前面讨论的权限设置下)。
连接后,我们可以附加到所需的进程来调试应用程序。在这种情况下,为了调试我们附加到远程机器的 W3WP.exe 的 ASP .Net 应用程序(客户端安装)。
现在 Visual Studio 调试将在本地计算机(开发环境)上按预期工作。对于需要更高权限的进程,您需要在远程机器上以管理员身份运行远程调试监视器 (MSVSMON.EXE)。
故障排除:
有时即使您附加了正确的进程,VS 调试模式也不会检测到该进程。这可能是由于以下原因之一:
• 确保将随程序集生成的.PDB 文件复制到远程计算机上的同一文件夹中。这将允许调试器获取调试符号。
• 确保您使用的是正确版本的 MSVSMON.exe – 64 位版本用于调试 64 位 C# 应用程序 – 不能与 x86 应用程序实例一起使用。
参考:
此过程的一部分取自Microsoft 说明、博客文章和堆栈溢出讨论。