环境:
同一局域网内,主机和虚拟机远程调试
远程计算机:虚拟机搭的WindowsXP/32(局域网中使用桥接,非局域网使用NAT)
本地计算机:Windows XP、Win7
1.本机计算机要求:VS2008 IDE 打开被调试代码
2.本机计算机登陆的用户名和密码,必须和远程计算机的登录名和密码相同,仅仅用户名相同,密码不同也是不可以的,会报错。
(也可以不设相同用户名和密码,貌似只有VC++下可以,在远程调试器选项里设置无验证模式,相应的在项目属性的调试页里设置,见下面调试方案1中VC++的"无验证模式"调试;)
3.远程计算机安装远程调试器:Remote Debugger,可以直接复制VS2008安装目录C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger下的X86目录,(X64对应64位机);
4.对于本地和远程计算机都要保证DCOM分布式服务是打开的,可以通过控制面板->服务中打开
5.关于本地安全策略:
开始->程序->管理工具->本地安全策略,安全设置->安全选项->网络访问:本地帐户的共享和安全模式,在Windows XP中本地帐户的共享和安全模式中默认为“仅来宾-本地用户以来宾身份验证”,需改为:经典->本地用户以自己的身份验证",否则可能碰到“VS IDE attach远程进程时报告用户名和密码不匹配的错误”.
6.将本地计算机上要调试程序的debug目录中生成的文件拷贝到远程机子的共享目录中(最好直接把生成目录定位到远程的共享目录,省的每次改动后重新拷贝,如图);
调试方案:
(1)开发环境直接启动远程进程形式
①C#、ASP.NET
项目属性--调试,如图设置,在本地VS IDE上按F5即可调试远程机器上的执行文件:
②VC++
Windows验证模式调试:项目属性--调试,如图设置,在本地VS IDE上按F5即可调试远程机器上的执行文件:
无验证模式:项目属性--调试,如图设置,在本地VS IDE上按F5即可调试远程机器上的执行文件:
(调试页面只要修改"连接"这一项即可,注意,不能忘了把远程调试器修改为不验证)
(2)附加进程形式(C#和VC++应该一样)
①运行VS远程调试监视器msvsmon.exe,记住图中的liu@WINXP32,格式是"登录用户名@计算机名",同时在远程机器运行要调试的目标程序,如图:
②VS程序中,调试--附加到进程,点击浏览,选中远程机器,然后在下面的进程列表中,选中需要附加调试的进程,如图: