开发COM 应用系统最令人头痛的问题便是如何调试COM 组件了。由于COM 是执行在COM 的执行环境中,因此Delphi的程序员无法像Delphi的分布式多层应用系统一样可以直接在Delphi的IDE中设定应用程序服务器的断点来调试。
事实上,Delphi仍然可以在Delphi的集成开发环境中调试COM 组件,也可以让程序员在集成开发环境中在COM 组件的程序单元中设定断点,然后执行客户端应用程序调用COM 组件。此时Delphi便会把执行控制权带到Delphi的集成开发环境中,并且暂停在程序员设定的断点上让程序员开始调试。从此开始,程序员就可以像调试一般的应用程序一样来调COM 组件了。不过要如此调试COM 组件,程序员必须先做一些设定。
<?xml:namespaceprefix=ons="urn:schemas-microsoft-com:office:office"/>
1、在Delphi的集成开发环境中激活要被调试的COM 组件项目,点Projects|Options菜单,在弹出的对话框中选择Linker页,选中其中的includeTd32info和includeremotedebugsymbol;
2、点Run|InstallCom Objects菜单,注册COM 组件,最好是注册到新的应用程序,也可以注册到已有的应用程序(这个应用程序需要是由Delphi的注册COM程序产生的)。
3、运行Win2000的控制面板|治理工具|组件服务,在COM 应用程序中找到刚才COM注册的应用程序,点右键,选择“属性”菜单,在弹出的对话框中,选择“高级”页,选中其中的“在调试器中启动”选项,在下面的调试路径中会有类似如下的内容:"C:ProgramFilesBorlandDelphi7Binordbg70.exe"dllhost.exe/ProcessID:{9CEC476D-83A5-4C2B-AFF1-3E83A147B866}
4、回到Delphi的集成开发环境,点选Run|Parameters菜单,在对话框中,HostApplication设为:C:WINNTsystem32DLLHOST.EXE,(要根据你的操作系统安装情况设定)。Parameters设为:/ProcessID:{9CEC476D-83A5-4C2B-AFF1-3E83A147B866};这个GUID的值要和Win2000组件服务中的属性值一致,可以从那边直接COPY过来。
5、设置断点,在Delphi的集成开发环境中运行COM;
6、在Windows中(或新开的Delphi环境中)运行调用这个COM的客户端程序。
这时会发现,Delphi开发环境中的COM停在断点处了,就可以接下来单步跟踪调试了。
原文地址:http://www.cnblogs.com/spiritofcloud/p/3976165.html