|
|
2
KyleMit Steven Vachon
6 年前
这里有一个完整的分步指南,因为有很多分散的信息,而链接的微软文章假定有很多信息。
首先,让我们澄清本指南其余部分使用的术语:
顾客
是你开发的电脑吗?
远程的
在IIS上运行的代码部署到的计算机
-
安装msvsmon.exe(
米
ICRO
S
对外直接投资
V
等分的
S
工作室
周一
在远程计算机上。
您可以在客户端上的以下路径找到随Visual Studio一起安装的可执行文件:
VS 2010: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger\x86
VS 2017: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\X64
当工具启动并运行时,您应该看到以下应用程序:
调试监视器创建了一个可以远程连接的服务器。如果您在Windows计算机上,名称可能是
User@Remote
. 记住这个名字,因为你以后需要它。如果要直接复制,可以转到“工具”>“选项”,您将看到服务器名称。如果你愿意,你甚至可以把它换成别的东西。
-
在这里,您可以尝试使用猎枪方法,看看是否一切正常,但根据您的网络配置,可能会出现一些额外的问题。若要尝试远程调试,请在Visual Studio中打开该项目。这应该是部署在IIS上的完全相同的项目。
在Visual Studio中,您将希望附加到新服务器上的进程。转到“工具”>“附加到进程”或“点击”
Ctrl键
+
中高音
+
磷
-
在“附加到进程”对话框中,将限定符从当前计算机的名称更改为新的服务器名称。(
用户@远程
)然后按Enter查看远程计算机上可用进程的列表:
-
如果一切都很快恢复,你的手就很好了。这意味着没有防火墙策略阻止您与远程服务器连接,您可以跳到步骤6。
或者,如果您收到以下消息,则意味着您的防火墙正在阻止客户端和远程设备进行通信。
-
如果您无法连接,根据您的域策略,可能会出现一系列问题。对于正式的防火墙设置,您可以查看Microsoft的
Configure the Windows 7 Firewall for Remote Debugging
但我发现细节不够。
如果附加失败,但仍会收到一条消息,说明用户已按如下方式连接:
这意味着问题不在客户端的出站规则或远程服务器的入站规则上。更可能的是,问题出在客户机上的入站规则上。
要解决此问题,请在客户端计算机上,转到“控制面板”>“Windows防火墙”>“高级设置”,该设置应打开
高级安全的Windows防火墙
. 选择
入站规则
右击输入
新建规则
:
给规则起任何名字。基于中的建议
this SO question
,而不是免除特定端口,我们将允许任何Visual Studio可执行文件的所有通信通过。转到“程序和服务”,然后选择Visual Studio 2010安装的完整文件夹路径:
%ProgramFiles% (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe
然后确保该规则仅适用于域内的计算机(确保未选中“私有”和“公共”)。
如果运气好的话,当你回去连接进程时,你应该能够进入远程机器。
-
此时,您应该看到远程机器上所有进程的列表。如果要调试Windows应用程序,只需选择进程的名称。对于ASP.NET,我们希望附加到w3wp.exe(www
W
奥克
磷
过程)。如果您在列表中没有看到它,请尝试打开要调试的应用程序的网页来启动服务器。您可以在本地主机上执行此操作,也可以从任何计算机导航到IIS中的地址。
确保为应用程序附加正确类型的代码。您可以在本机(C++等)或托管(VB、C等)中进行选择,或者选择AutoStudio并让VisualStudio决定。
-
如果出现以下错误,我发现使用管理员权限重新打开Visual Studio和msvsmon.exe修复了该问题
-
您将看到一个安全警告,您可以通过单击接受
附加
:
-
我遇到的最后一个问题是获取要加载的调试程序文件。您需要确保正在执行的库与当前在Visual Studio中加载的库完全匹配,并且它们在客户端计算机上的解决方案中具有正确的.pdb文件。您可以通过进入调试>Windows>模块或点击来检查加载了哪些模块以及它们从何处加载。
Ctrl键
+
中高音
+
U
.
有关加载调试器文件的详细信息,还可以尝试以下任何资源:
希望在这一点上,它能为你工作。现在,您可以捕获任何对您的IIS托管代码的调用,并像在开发过程中那样逐步执行这些调用。
进一步阅读
:
|