VS2010中C#实现远程调试功能
文档转自网络
0 背景说明
通常程序运行所在的计算机是客户终端工位机,多数情况下编写的程序需要连接设备共同调试。由于使用VS2010编写应用程序调试需要VS2010集成开发环境,若需要在每台客户机上都安装VS2010,这将大大增加计算机系统的安装难度,同时可维护性也会降低。因此在没有安装VS2010的计算机上实现调试功能就变得相当重要,本文主要介绍该远程调试的实现方法。
在介绍该实现方法前,首先引入两个名字:
本地计算机:公司工作人员持有,能够实现软件开发功能的计算机。
客户计算机:客户持有,连接设备进行检测操作的工位机。
1 流程控制
图1.1远程调试控制架构
在调试过程中需要进行设备控制操作,如开始检测等,该类操作主要在[客户计算机]上进行。为能同时调试源代码,最佳实现方式如图1.1所示,在[客户计算机]上实现远程控制[本地计算机]。
2 计算机设置
为正常实现在[客户计算机]上远程控制[本地计算机]和[本地计算机]能够在[客户计算机]上远程调试源码,请分别检查[本地计算机]、[客户计算机]的以下服务和设置:
- 启用服务中的TerminalServices服务实现远程功能;
-
按下述步骤更改用户策略:
- 运行gpedit.msc打开组策略管理器;
- 依次点击:本地计算机→策略→计算机配置→Windows设置→安全设置→本地策略→安全选项;
- 将网络访问:本地账户的共享和安全模式选项设置为经典-本地用户已自己的身份验证。
3 在[客户计算机]运行远程调试器
从[本地计算机]上拷贝远程调试器到[客户计算机],远程调试器分为x86版本和x64版本,如图3.1所示。
图3.1开始菜单中远程调试器位置
点击图3.1中的VS2010远程调试器文件夹,可将整个Remote Debugger文件夹拷贝到[客户计算机]上,如图3.2所示。
图3.2远程调试文件夹
选择正确的版本,如选择x86版本运行远程调试器。如图3.3所示,在X86文件夹中能够看到文件"msvsmon.exe",该应用程序为VS2010远程调试工具,在[客户计算机]双击运行即可,如图3.4所示。
图3.3远程调试器msvsmon.exe
图3.4[客户计算机]上VS2010远程调试器启动
4 用户配置
同时在[本地计算机]、[客户计算机]上设置相同的用户名和密码,笔者在调试过程中在该两台计算机上均使用管理员用户"Administrator",且设置相同的用户密码"fofen"。
该步骤也可以通过设置相同管理员权限的其他用户来实现,但要求[本地计算机]、[客户计算机]上的用户名和密码必须相同,该操作比较繁琐,本文不介绍该方法。
5 [客户计算机]共享文件夹
在[客户计算机]上共享一个具有读写权限的文件夹,注意选择允许"完全控制"权限。如图5.1所示。
图5.1共享文件夹权限设置
6 [本地计算机]VS2010工程设置
6.1设置工程生成路径
如图6.1所示,设置生成项目工程的路径为第5小节中[客户计算机]中共享的Bin文件夹,该处使用[客户计算机]的网络名称,当然也可以输入IP地址。
图6.1项目工程生成路径设置
6.2设置工程调试信息
图6.2项目工程调试信息设置
选择"属性"中的调试选项卡,对"启动操作"中的启动外部程序一项进行编辑,该项内容由远程机IP(或网络名称)及指向共享文件夹中的应用程序路径组成。对"启动选项"中的工作目录一项进行编辑,该项内容由远程机IP(或网络名称)及工程所在路径组成。勾选使用远程计算机,该项内容填入远程机IP或网络名称。如图6.2所示。
提示:可现在"网上邻居"中找到[客户计算机]的共享文件夹,将其路径复制下来。
6.3远程调试启动
经过以上设置后,在[本地计算机]中点击F5或VS2010中启动调试按钮,此时,神奇的事情发生了,你会发现[客户计算机]上需要调试的程序启动,调试监视器显示已连接,如图6.3所示。至此,你就可以随心所欲在远程计算机上调试程序了,结合远程控制功能,感觉如同在本机调试一样,操作非常方便。
图6.3[客户计算机]远程调试监视器监视连接
[本地计算机]第一次进行调试时,可能会出现如图6.4所示的提示窗口。此时,选择最后一项"取消禁止从任何计算机进行远程调试的限制"确定即可。
图6.4[本地计算机]为远程调试配置防火墙
7 常见问题
7.1身份验证失败
由于账户或密码不一致,或者没有本地账户的共享和安全模式 没有设置正确导致身份验证失败。如图7.1 所示。
图7.1 [本地计算机]身份验证失败
解决方法:
将[本地计算机] 和 [客户计算机]的用户名和密码设为一致,并且将两台计算的本地安全策略按照本文第二条"计算机设置"进行正确配置。
7.2无法启动调试
由于无法连接到远程调试器,[本地计算机]无法启动调试。如图7.2 所示。
图7.2 [本地计算机]无法启动调试
解决方法:
在[客户计算机]中找到msvsmon.exe 程序并启动。