VS.net 远程调试

我们时常听到开发人员抱怨:“这缺陷在我机器上重现不了啊!”。在如下这几种情形下,定位和解决这样的缺陷显得非常麻烦:

· 开发环境搭建起来非常麻烦,如需要安装庞大的开发工具包,像VS.net系列软件。

· 不能破坏测试机纯净的系统环境,即使问题最终能解决,你总不能要求用户也装一个开发环境吧。

· 真实的应用环境在服务器上,如web服务器,这种硬件和软件环境的搭建受很多外围因素制约。

如果程序是用VS.net环境开发的话,那么其自带的远程调试(Remote Debugging)功能为解决上述问题提供了很好的解决方案。

本文只介绍远程调试exe型应用程序的实施步骤,其他如web程序远程调试请参看其他相应文章,方法基本类同。

一.准备工作

假定装有开发环境的本地机器用local表示,远程需要调试的机器用remote表示。

1. 确保local和remote机器能相互访问,此访问等级是文件夹级别的。如果操作系统是WinXP,请将访问安全策略从guest改为classic(控制面板->管理工具->本地安全策略->本地策略->安全选项->网络访问:本地账号共享与安全模型)。某些时候开启的防火墙会引起比较大的访问问题,建议将防火墙关闭。



2. 确保local和remote机器当前系统登录的账号和密码一样。在此说明以下三种情况:

· 同工作组中的两个系统:创建等同账户并用其登录。

· 同域中的两个系统:用同一域账号登录两个系统。

· 工作组和域中的两个系统:在工作组的系统中创建等同域账号的用户名和密码,并用其登录。



3. 在remote机器上安装Visual Studio Remote Debugging Monitor应用程序。其版本分为x86,x64,ia64三种,请选择正确的版本进行安装。该程序可从以下三处获得:

· 微软下载中心:http://www.microsoft.com/downloads/details.aspx?FamilyID=440EC902-3260-4CDC-B11A-6A9070A2AAAB&displaylang=zh-cn

· VS.net 的光盘或镜像中Remote Debugger文件下的rdbgsetup.exe文件

· 将开发环境中msvsmon.exe程序(路径为VS Install Path\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger\x86\msvsmon.exe)所在的目录进行共享,在remote机器上直接运行该程序即可(无需拷贝到remote本地)



二.程序配置:

1. 在remote机上启动Visual Studio Remote Debugging Monitor应用程序。选择菜单Tools->Options->Authentication mode ,选择Windows Authentication,后面的Permission button所引出的Permission for Remote Debugging 对话框中Group or user name一项确保当前的登录账户存在。





2. 将local需要调试的exe文件拷贝到remote机上任意文件夹。注意,一定要将exe同级别的pdb文件一并拷过去,否则将无法启动单步调试。这里假设拷贝后目录为E:\RemoteDebug\ RemoteDebug.exe。确保exe文件所在的父文件夹处于local机可访问状态,即可将上述E:\RemoteDebug目录共享,只读即可。



3. 在VS.net开发环境(本文采用的是VS.net 2008)启动远程单步调试有两种方式:

方法一:属性设置法





· 在IDE中的资源管理器中右键选择项目属性,出现属性配置框,选择Debug 页。

· 在Start Action一项中选择Start external program,并在右侧的文本框中填写上remote机上的被调试程序的绝对路径(图中10.162.22.82为远程主机IP地址)。

· 在Start Options一项中working directory的文本框中填写remote机上被调试程序所在的目录的绝对路径。选择多选按钮Use remote machine,并填写远程主机名或IP。如果被调试程序启动时需要添加运行参数,那么在Command line argument一栏中填写。

· 如果被调试程序含有非托管代码,请将Enable Debuggers一项中的Enable unmanaged code debugging多选框选上。

· 启动IDE中的Debug,remote机上的被调试程序将自动运行起来,并在local的代码断点处停止运行。



方法二:进程注入法





· 在IDE中选择菜单Tools->Attach to Process,出现如上对话框。

· 在Transport一项中选择Default。

· 在Qualifier一项中填写Visual Studio Remote Debugging Monitor中所示的“用户@机器名”,如果成功连接remote机,那么Available Process列表中会出现remote机上对应的进程。请确保remote机上被测试程序已预先成功启动。

· 在进程列表中选择被调试程序进程,点击Attach按钮,Local IDE将自动进入Debug状态,并在代码断点处停止运行。



三.异常情况:

1. Remote和Local机请尽可能使用同一种的操作系统。先前试验过Remote机是WinXP,Local是Win7,均无法成功进行断点调试。



四.其他资源:

1. MSDN关于远程调试的详细介绍:http://msdn.microsoft.com/en-us/library/y7f5zaaa.aspx

2. Web程序的远程调试:http://parthasarathi.netfirms.com/tutorials/Remote%20Debugging%20in%20VS%20Net.html

 

http://blog.csdn.net/roger_ge/archive/2010/03/17/5389614.aspx

你可能感兴趣的:(.net)