使用vc6进行远程调试csp

发布时间: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

使用vc6进行远程调试csp - Dsliu - Dspace

4.在服务器上安装ePass1000nd

5.从client端的Microsoft Visual Studio\Common\MSDev98\Bin中拷贝tlnot.dll,msdis110.dll,dm.dll,msvcmon.exe到 server上

使用vc6进行远程调试csp - Dsliu - Dspace

6.使用在client机器上编译好的待调试动态库替换server上系统安装目录下的文件

使用vc6进行远程调试csp - Dsliu - Dspace

7.在server上启动msvcmon.exe,点击setting按钮,设置ip为调试器所在机器的ip(client的ip),然后点击 connect

使用vc6进行远程调试csp - Dsliu - Dspace

8.在client启动VC6打开工程

9.在vc6中点击菜单build>debugger remote connection…出现对话框,选择network(tcp/ip),然后点击设置,在对话框中设置server机器(待调试机器)的ip

使用vc6进行远程调试csp - Dsliu - Dspace

10.在vc的工程属性的debug>general选项里面设置本地和远程可执行程序路径

使用vc6进行远程调试csp - Dsliu - Dspace

11.将编译好的待调试dll拷贝到client机器的相应位置(我这里是windows/system32/ngcsp.dat等)

12.在vc的工程属性的debug>debug dlls里面设置本地dll与远程待调试dll的关联(重要,设置错误的话无法导入调试符号,无法打断点)

使用vc6进行远程调试csp - Dsliu - Dspace

13.代码中打断点然后vc中F5 go…………

14.yeah,断下了

使用vc6进行远程调试csp - Dsliu - Dspace

15.看到vmware中ie停止了

使用vc6进行远程调试csp - Dsliu - Dspace

另外在XP或VISTA系统上需要做额外工作:

关闭防火墙

本地安全策略中〉网络访问:本地帐户的共享和安全模式改为“经典:本地用户以自己的帐户登陆”

调试机器和被调试机器最好使用相同的帐户和密码

创建文本文件包含以下内容(注意没有这一步不能单步调试):

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DebugObjectRPCEnabled]

如果是98系列把Windows NT改为Windows

改名为something.reg,双击运行

over