Winforms 如何在远程计算机上启动调试过程?

Winforms 如何在远程计算机上启动调试过程?,winforms,remote-debugging,Winforms,Remote Debugging,我正在为用C编写的标准Windows窗体应用程序设置Visual studio远程调试会话 互联网上有很多关于如何设置远程计算机和MSVCMON.EXE的故事,但我找不到任何关于如何在我的计算机上执行操作以确保在我按下“开始调试”时在远程计算机上调试我的程序的故事 那么,我应该怎么做才能使远程调试成为可能呢?经过一些研究,我已经找到了如何进行远程调试的方法,即使您在一家防火墙等存在很多安全问题的公司工作。我唯一需要从it部门得到的是两台计算机上的管理员权限 先决条件: 我在Visual Stud

我正在为用C编写的标准Windows窗体应用程序设置Visual studio远程调试会话

互联网上有很多关于如何设置远程计算机和MSVCMON.EXE的故事,但我找不到任何关于如何在我的计算机上执行操作以确保在我按下“开始调试”时在远程计算机上调试我的程序的故事


那么,我应该怎么做才能使远程调试成为可能呢?

经过一些研究,我已经找到了如何进行远程调试的方法,即使您在一家防火墙等存在很多安全问题的公司工作。我唯一需要从it部门得到的是两台计算机上的管理员权限

先决条件:

我在Visual Studio 2012 Professional中使用了此方法,几年后在Visual Studio 2013 Ultimate中再次测试了此方法。 本地计算机和远程计算机都在同一个域中。 我作为域的成员登录。 如何做到:

在远程计算机上:使用普通帐户登录。如果这是第一次为您创建新环境。 在远程计算机上:确保您具有管理员权限。 在远程计算机上:启用远程桌面。 在本地计算机上找到Visual Studio的远程调试文件夹。 在我的计算机上,这是:C:\ProgramFilesx86\Microsoft Visual Studio 11.0\Common7\IDE\Remote Debugger 将此文件夹复制到远程计算机上类似的可查找文件夹。 在远程计算机上,从复制的文件夹运行MsvsMon.exe。 第一次它将进行一些安装。让它改变防火墙。 使用工具选项-Windows身份验证 使用工具权限确保您是具有调试权限的用户。 msvsmon.exe程序现在应该正在等待新的连接。服务器的名称类似于远程计算机名称:端口号,例如Prototype1:4016

现在,在将使用Visual Studio开发程序的本地计算机上执行以下操作:

打开Visual Studio,并加载解决方案。 如果尚未设置启动项目,请在启动项目上单击鼠标右键,然后选择“启动为启动项目”。 启动configuration manager(配置管理器)单击组合框旁边的箭头,选择调试/发布选项,然后选择configuraton manager。。。。 在configuration manager活动解决方案配置中,选择新建。为新配置指定一个正确的名称,并使其成为Debug的副本。 为远程调试创建代码时,必须选择新配置。 需要更改此新配置的某些设置。例如,您必须确保生成后的结果代码位于远程计算机上。最简单的方法是双击启动项目的属性并选择build选项卡。将输出路径从bin\debug更改为远程计算机上需要代码的位置。例如:\\Prototype1\Users\Harald\Documents\CameraTestProgram\。 在相同的属性表单中,在“调试”选项卡上,选择调试会话应在哪台计算机上进行:检查:使用远程计算机并填写与MsvsMon.exe中相同的名称。在我的示例中:键入Prototype1:4016。 在VisualStudio中生成代码,设置断点并开始调试。 使用远程桌面连接控制windows窗体。 如果要调试用C编写的普通Windows窗体应用程序,此方法可以工作。我检测到,如果使用不安全的代码,此方法甚至可以工作。如果你的程序包含C++代码,但是可以忽略它们。 2013年10月和2015年8月,微软的链接已经生效:

。2017年6月,此链接不再有效

。它在2017年6月起作用


非常有用的描述让我走上了正确的道路。我正在调试一个网站,我只需要将远程调试器文件夹复制到服务器,在服务器上以管理员身份运行MsvsMon.exe程序。然后在本地系统上的VS2013中,我只需要选择Debug/attachtoprocess并将限定符字段指定为servername:4108。然后它会列出远程服务器上的进程,我可以附加到w3wp.exe.Related post-