在工作中有时候需要在服务器的环境下远程调试,例如调试微信相关服务的时候。

1. 下载远程调试工具

网址:https://visualstudio.microsoft.com/zh-hans/downloads/

Visual Studio 远程调试步骤_服务器

下载后直接安装至完成。

Visual Studio 远程调试步骤_服务器_02

启动Remote Debugger:

Visual Studio 远程调试步骤_服务器_03

如果只是短时间测试,可以选择无身份验证,为了安全,工具自动设置了空闲时间,即多久没有操作会自动关闭此功能。

2.新建测试项目

建了一个简单的HelloWorld项目,简单几句代码,加上断点。

Visual Studio 远程调试步骤_服务器_04

发布debug到远程服务器。

双击HelloWorld.exe,运行程序

Visual Studio 远程调试步骤_服务器端_05

3.开始调试

点击菜单【调试】->【附加到进程】,打开如下页面

Visual Studio 远程调试步骤_身份验证_06

① 选择连接类型

如果开启了身份验证,则默认即可,否则选择【无身份验证】。

② 填写服务器的IP及调试服务的端口

填写完后直接回车,不要点击后面的【查找】按钮。在可用进程中会列出服务器端的进程列表。

③筛选进程

可选,如果服务器端进程较多,可以在此筛选,支持模糊查询。

找到HelloWorld.exe,双击改进程或点击附加按钮,和附加本地进程一致。

随便输入什么字符,回车,可以看到进入了断点

Visual Studio 远程调试步骤_微信_07

可以正常进行调试了。


4. 调试IIS中的网站

如果是调试发布到IIS中的网站,则需要附加的进程为w3wp.exe。

可能会遇到如下情况:

如果看不到该进程,则需考虑如下操作,①访问该网站,休眠状态有时候找不到该进程。②勾选“显示所有用户的进程”,再刷新。

如果看到多个w3wp.exe,这是在IIS中部署了多个网站,不知道该附加到哪个上面,可以以管理员权限运行 cmd,执行如下命令:


cd %windir%\system32\inetsrv

appcmd list wp

在执行结果中可以看到网站的名称和对应的进程ID,在附加进程的时候根据进程ID区分。


参考资料:

1. ​ ​C#教程​

2. ​ ​编程宝库​