主要用来解决本地调试没问题发布到远端后却报错的项目。
一、Windows Debug Windows
本文叙述采用的VS2022。
①远端(windows服务器)安装远程调试器
远端(windows服务器)安装过程省略,详见官方参考链接中设置远程调试器。
②本地配置远程调试
无论什么样的程序进行远程调试的大前提:
方法1:
目标代码编译文件和本地项目编译文件所在的目录一模一样。
例:
若本地调试的文件地址:D:\RemoteDebugCode\ConsoleApp_netframework_APITest\bin\Debug也应把上面的文件夹直接复制到远端(windows服务器)上。
方法2:
将本地项目发布到远端(windows服务器)服务器上.
总之要始终保证两个计算机上编译文件版本相同,否则启动远程调试后会进不去断点。
本地调试示例:
参考链接
a.调试普通Console程序
方法1:
①本地项目debug文件如下
②远端也应存在相同的文件,如下:
③接着远端启动调试工具后本地配置远端调试:
.net framework 4.6.2 项目配置方式:
.net 6 项目配置方式:
④本地代码打上断点,本地启动调试,即可进入远端调试。
方法2:
建了一个简单的HelloWorld项目,简单几句代码,加上断点。
发布debug到远程服务器。
双击HelloWorld.exe,运行程序
点击菜单【调试】->【附加到进程】,打开如下页面
①如果开启了身份验证,则默认即可,否则选择【无身份验证】
②填写完后直接回车,不要点击后面的【查找】按钮。在可用进程中会列出服务器端的进程列表。
③可选,如果服务器端进程较多,可以在此筛选,支持模糊查询。找到HelloWorld.exe,双击改进程或点击附加按钮,和附加本地进程一致。随便输入什么字符,回车,可以看到进入了断点。
b.调试IIS发布的程序
调试IIS发布的程序本地项目不用修改项目的debug配置,直接attach process即可,详见下面示例。
如果是调试发布到IIS中的网站,则需要附加的进程为w3wp.exe。
可能会遇到如下情况:
如果看不到该进程,则需考虑如下操作:
①访问该网站,休眠状态有时候找不到该进程。
②勾选“显示所有用户的进程”,再刷新。
若部署多个网站可通过tiltle等信息辨别是哪个。
方法1:
1.保证目录结构一致
本地代码文件结构如下:
D:\RemoteDebugCode\xxxx
debug文件目录:D:\RemoteDebugCode\xxx\xxx\bin\Debug\net6.0
远端必须存在相同的debug文件目录:D:\RemoteDebugCode\xxx\xxx\bin\Debug\net6.0
2.发布IIS网站
将该远端debug文件目录发布为IIS网站。
3.在远端开启远程调试工具
4.浏览该IIS网站
在远端即可。
5.本地配置好远程调试打上要调试的断点,并附加进程 ,最后启动项目
点击attach后远端调试器会有如下提示:
6.操作3打开的网站并做相应操作使进入4的断点开始调试。
点击上面的execute进到断点,如下
注意事项:
1.当调试时,修改了本地代码就一定要rebuild后将相应修改的dll替换到2的远端debug文件目录下,再启动调试。否则会出现进不去本地断点的情况。
2.调试部署的iis网站一定要注意当前网站只有你在浏览,要是有别人在浏览也会进到你打的断点里影响调试效率。
方法2:
还没试过,后续更新。