首页 > 代码库 > 远程调试 Asp.Net 项目

远程调试 Asp.Net 项目

项目部署到产品环境后,难免会发生一些故障,有一些可以在本地测试环境中直接重现,而有一些则无法重现。对于可以在本地测试环境中重现的Bug,开发人员往往能够很迅速地进行问题排查。而对于无法重现的Bug,就没这么容易了。

Visual Studio 中提供了远程调试的功能,可以帮助我们进行远程调试。

准备环境

1. 本机安装 Visual Studio(,这里用 Visual Studio 2012 进行演示)。

2. 您的 Asp.Net 项目源代码,同时确保远程服务器上使用的正是由该源码编译产生的(Debug、Release 版本都行)。

调试步骤

1. 复制 Microsoft Visual Studio / Visual Studio Tools / Remote Debugger Folder 目录中对应的调试版本到远程服务器。

Remote Debugger Folder

找到 Remote Debugger Folder

 

Remote Debugger Folder 中选择对应的版本

根据服务器,选择对应的版本

 

复制到远程服务器

把工具复制到远程服务器

 

2. 在远程服务器运行 msvsmon.exe

   默认的调试选项使用的是 Windows 验证,也就是说当一台机器远程连接到服务器的时候,需要输入登录远程服务器时所用的用户名和密码,只有验证通过才能允许调试,否则无法连接。

运行msvsmon.exe

在服务器上运行 msvsmon.exe

 

msvsmon.exe运行后截图

启动后,会显示如下对话框

 

   如果不想进行用户名密码的验证,则必须设置身份验证模式为 “无身份验证”。

在msvsmon.exe中选择选项

选择 “工具” / “选项”

 

选择无身份验证

选择 “无身份验证”,同时勾选 “允许任何用户进行调试”

 

3. 在用管理员账户运行 Visual Studio,打开 调试 / 附加到进程。

选择附加到进程

点击 “附加到进程”

 

   3.1 远程服务器采用 “Windows 身份验证”

       选择 “传输” 为 “默认值”,在 “限定符” 中输入远程服务器的 IP:端口号,回车。

       此时会跳出登录框,填写服务器授权的用户名和密码。

输入服务器密码

输入用户名和密码

 

       选择 Asp.Net 项目所在的进程,点击 “附加”。如果没有找到进程,请勾选 “显示所有用户进程”。

选择需要附加的进程

选择对应的进程进行附加

 

msvsmon.exe中显示已连接

服务器端会看到 “xxx已连接” 字样

 

   3.2 远程服务器采用 “无身份验证” 

       选择 “传输” 为 “远程(无身份验证)”,在 “限定符” 中输入远程服务器的 IP:端口号,回车。

       选择 Asp.Net 项目所在的进程,点击 “附加”。如果没有找到进程,请勾选 “显示所有用户进程”。

 

4. 附加到远程进程后,就可以像本地代码一样设置断点,进行调试了。

远程调试 Asp.Net 项目