VS之远程调试IIS服务

概述

当有些情况,测试环境发现bug,但是本地有不好复现或者没法复现的时候,这时候就需要用到远程调试了,通过在测试环境上安装一个调试工具,然后就可以在本地运行代码来远程连接到测试服务器来调试代码。.

当前项目是一个老项目,部署在IIS中,关于如何部署服务到IIS,请查阅

准备

首先我们需要先准备工具,可以直接去官网进行下载安装

VS之远程调试IIS服务
img

下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/?rr=https://docs.microsoft.com/en-us/visualstudio/debugger/remote-debugging?view=vs-2022

或者如果直接将vs安装路径的Remote Debugger拷贝到指定的服务器上进行运行,比如我从本地的VS路径安装路径中找到为:

VS之远程调试IIS服务
img

地址:D:\Program Files\VS\2022\Enterprise\Common7\IDE\Remote Debugger

操作

运行调试工具

我是直接拷贝的VS安装路径的Remote Debugger到服务器,所以我直接找到该文件夹x64下的msvsmon.exe文件进行启动,启动并连接的效果如下

VS之远程调试IIS服务
img

我们可以在Tools=>Options中设置远程端口以及认证模式等,因为我只是内网的测试环境,所以直接设置为允许任何人连接,并且端口为4026

VS之远程调试IIS服务
img

点击OK,那么远程调试工具就配置好了。

注意:因为我们要让其他机器连接当前服务器,所以需要开放端口或者关闭服务器的防火墙等。

发布代码

因为调试的代码只支持Debug模式的代码,所以需要将我们的代码重新发布一下,然后拷贝发布的文件到服务器重新部署。

注意:当本地的代码和测试环境代码有差异的时候,也不会命中我们在本地VS代码加的断点。

VS调试

使用VS2022打开我们的代码,然后选择调试=>附加到进程

VS之远程调试IIS服务
img

点击附加进程,然后连接类型选择远程(无身份验证),然后再连接目标输入远程服务器的IP+远程调试工具设置的端口,然后直接回车就会出来可附加的进程列表

VS之远程调试IIS服务
img

另外这里的连接类型还支持其他的,比如

VS之远程调试IIS服务
img

可以根据实际情况选择

出来进程列表后,如果内容多可以在右侧进行搜索,然后选择指定的进程,如果是IIS服务然后没看到,可以再次访问一下系统,然后就可以看到了

VS之远程调试IIS服务
img

找到要附加的进程,然后选中点击附加,如图

VS之远程调试IIS服务
img

点击附加后就可以在代码中设置断点,然后在页面触发后进入断点进行调试了。

总结

通过该方案在有些情况下还是很方便找到问题的,如果没有进到断点就需要检查下是否是Debug版本或者代码和服务器版本是否存在差异等。