2

我试图远程调试安装在客户端 Windows Server 2012 中的 ASP .net 应用程序。我在远程机器上安装了远程调试器并以管理员模式运行它。(甚至之后)按照微软的说明,我遇到了严重的错误——其中大部分是配置错误,说明中没有详细说明(或忽略)。

在所有设置障碍之后,我设法附加了 W3WP.EXE 进程,但我无法调试远程应用程序。

调试器给出了标准警告 - 没有为此文档加载任何符号

(我尝试将 .Pdb 文件复制到远程计算机 - 确保本地副本和远程副本中的版本相同)。

我错过了任何步骤吗?详细的演练会有所帮助。

4

3 回答 3

4

没有明确记录的一个步骤是,在远程应用程序 web.config 文件中,编译调试必须设置为 true:

<system.web>
    <compilation targetFramework="4.5" debug="true">
    ...
于 2013-10-17T17:24:08.293 回答
2

考虑以下情况:

我们在客户端机器上部署了一个 Web 应用程序,客户端报告了一个错误。然后我们尝试在我们的本地环境(代码存在的地方)中复制问题,但未能成功。现在有两种调试客户端安装的方法——通过日志文件或通过 Visual Studio 调试模式。如果我们的日志记录不详细,我们将在故障排除方面做噩梦。另一种选择是在服务器机器上安装 Visual Studio(这不是一个好主意)。

为了解决这个远程调试问题,我们可以使用一个叫做远程调试监视器(MSVSMON.EXE)的小工具。它允许您从运行 Visual Studio 的另一台计算机(本地开发环境)运行、调试和测试在一台设备(客户端计算机)上运行的应用程序。

先决条件:

  1. 远程设备和 Visual Studio 计算机必须通过网络连接或通过以太网电缆直接连接。不支持通过 Internet 进行调试。

  2. 远程设备必须运行远程调试组件。

  3. 您必须是管理员才能在远程设备上安装远程调试器。要与远程调试器通信,您必须具有远程设备的用户访问权限。

安装:

  1. 从Microsoft 下载中心下载 Visual Studio Remote Debugger 安装程序。在远程设备上运行与操作系统(x86、x64、ARM)匹配的安装程序(客户端机器 - 请记住,您需要管理员权限才能安装它)。
  2. 首次安装并启动远程调试器后 - 出现配置远程调试对话框
  3. 如果未安装 Windows 服务 API,请选择安装按钮。
  4. 选择您希望远程调试器与之通信的网络类型。必须至少选择一种网络类型。
  5. 要更改身份验证模式或指定远程调试器的超时值,请选择远程调试监视器工具菜单上的选项。
    您可以选择在 No Authentication 模式下运行远程调试器,但强烈建议不要使用此模式。在此模式下运行时没有网络安全性。只有在确定网络没有风险时才选择 No Authentication 模式来自恶意或敌对流量。
  6. 默认情况下,远程设备的管理员可以连接到远程调试器。要授予或拒绝其他用户使用远程调试器的权限,请在工具菜单上选择权限。

指示:

  1. 在连接到客户端计算机之前,首先在客户端 PC 上启动一个工作进程。要启动您需要运行应用程序的工作进程,IIS 将完成其余的工作。

  2. 启动后,打开开发原始代码的 Visual Studio 实例并导航到Debug -> Attach to Process

  3. 默认情况下,这会列出在本地机器上运行的进程。

  4. 要连接到远程服务器的进程,请在限定符字段(可编辑字段)中输入机器名称。可以从远程调试监视器获得此详细信息。一旦远程调试监视器(MSVSMON.EXE) 启动,它就会显示机器名称和端口号。

  5. 如果您在域外访问远程调试监视器,它将提示进行身份验证。授权基于远程调试监视器中配置的权限(在前面讨论的权限设置下)。

  6. 连接后,我们可以附加到所需的进程来调试应用程序。在这种情况下,为了调试我们附加到远程机器的 W3WP.exe 的 ASP .Net 应用程序(客户端安装)。

  7. 现在 Visual Studio 调试将在本地计算机(开发环境)上按预期工作。对于需要更高权限的进程,您需要在远程机器上以管理员身份运行远程调试监视器 (MSVSMON.EXE)。

故障排除:

有时即使您附加了正确的进程,VS 调试模式也不会检测到该进程。这可能是由于以下原因之一:

• 确保将随程序集生成的.PDB 文件复制到远程计算机上的同一文件夹中。这将允许调试器获取调试符号。

• 确保您使用的是正确版本的 MSVSMON.exe – 64 位版本用于调试 64 位 C# 应用程序 – 不能与 x86 应用程序实例一起使用。

参考: 此过程的一部分取自Microsoft 说明博客文章堆栈溢出讨论

于 2013-08-01T02:12:33.900 回答
0

我有一个问题,我用最新的 .NET 框架(4.8)创建了一个 ASP.NET 应用程序。在更改为 4.6.1(这产生了很多问题)后,我终于能够调试远程应用程序。

于 2020-06-05T10:45:51.370 回答