发布时间:2010-2-12 12:01
分类名称:Private
最近在查错,因涉及到不同平台,所以需要在虚拟机里调试程序,但总不能在每一个虚拟机里安装vc及拷贝编译代码,工作量太大了。另外有时候测试部能够复现 的bug,在研发部无法复测。这两种情况搞得人很头疼。
其实对VC进行程序调试时,除了常规的单机调试方式外, 也可以双机调试,即一台计算机作为主机,显示调试器窗口,而另一台计算机作为客户机,显示被调试程序的输出值。在VC里称这种方式为远程调试,但这种调试 方法与常规方法有少许不同,需要进行必要的设置,下面以调试csp代码举例说明.
环境: 调试机器(以下称client)WinXP cn+vc6 被调试机器(以下称server)WinME 运行于VMWare中
步骤:
1.从\\ftserver\vm中下载winme_cn.rar
2.配置VMWare的网络模式为NAT模式
3.配置服务器IP地址获取方式为DHCP
4.在服务器上安装ePass1000nd
5.从client端的Microsoft Visual Studio\Common\MSDev98\Bin中拷贝tlnot.dll,msdis110.dll,dm.dll,msvcmon.exe到 server上
6.使用在client机器上编译好的待调试动态库替换server上系统安装目录下的文件
7.在server上启动msvcmon.exe,点击setting按钮,设置ip为调试器所在机器的ip(client的ip),然后点击 connect
8.在client启动VC6打开工程
9.在vc6中点击菜单build>debugger remote connection…出现对话框,选择network(tcp/ip),然后点击设置,在对话框中设置server机器(待调试机器)的ip
10.在vc的工程属性的debug>general选项里面设置本地和远程可执行程序路径
11.将编译好的待调试dll拷贝到client机器的相应位置(我这里是windows/system32/ngcsp.dat等)
12.在vc的工程属性的debug>debug dlls里面设置本地dll与远程待调试dll的关联(重要,设置错误的话无法导入调试符号,无法打断点)
13.代码中打断点然后vc中F5 go…………
14.yeah,断下了
15.看到vmware中ie停止了
另外在XP或VISTA系统上需要做额外工作:
关闭防火墙
本地安全策略中〉网络访问:本地帐户的共享和安全模式改为“经典:本地用户以自己的帐户登陆”
调试机器和被调试机器最好使用相同的帐户和密码
创建文本文件包含以下内容(注意没有这一步不能单步调试):
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DebugObjectRPCEnabled]
如果是98系列把Windows NT改为Windows
改名为something.reg,双击运行
over