请详细说明如何调试COM+;我现在已经做了的工作有
1.project-〉options-〉linker-〉include Td32 info 和 include remote debug symbol 选上
2.运行RUN|PARAMETERS
  HOST APPLICATION 填入 {系统路径}\system32\dllhost.exe
  PARAMETERS       填入 /processID:{xxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
3.打开组件管理
  选择组件安装所在的组的属性,在高级这页里选择调试,这里的调试器路径应该设成什么内容? 请具体说明.
4.需要打开几个Delphi才能调试?具体怎么操作?客户端是不是也要在Delphi中运行才行.

解决方案 »

  1.   

    关注,我也试了几次没有成功,我现在是这么做的,
    公共函数
    procedure WriteInfo(str : string);
    var
      TF    : TIniFile;
    begin
      TF:= TIniFile.Create('G:\我的文档\D7\DFMC_TreeView\error.ini');
      TF.WriteString('Error','Msg',str);
    end;
    在估计出错的地方之前调用,然后去看看输出的字符,这个方法比较笨,
      

  2.   

    http://expert.csdn.net/Expert/topic/2929/2929923.xml?temp=.3391687
    好像有人搞定了,可惜我测试没有通过
      

  3.   

    除了以上两点  当客户端使用的时候最好在DELPHI中调用 这样可以拦截到是否是客户端出错
      

  4.   

    一般客户端运行时候   会把栈的位置暴露  这样可以通过产生错误断点的方式找到相应的栈内容  也就是你的COM+的内存代码,这样可以用来分析错误到底出在什么地方
      

  5.   

    感谢各位!
    终于摸索出正确的方法来了,要求版主增加我的专家分.方法是:
    在Delphi中做好COM+以后,project-〉options-〉linker-〉include Td32 info 和 include remote debug symbol 选上;
    然后,在Delphi中注册COM+组件,注册到一个新的应用程序.
    打开Windows的组件服务中的COM+应用程序,找到刚才新建的应用程序,在属性的高级页中,选上"在调试器中启动选项",这时你会发现自动生成了调试器路径,这个路径(特别是后面的GUID参数)一定不要改.
    最后,回到Delphi,RUN|PARAMETERS
      HOST APPLICATION 填入 {系统路径}\system32\dllhost.exe
      PARAMETERS    /processID:{xxxxxxxxxxxxxxxxxxxxxxxxxxxxx}   这里的参数用刚才在组件管理器中自动生成的GUID参数
    在Delphi的COM+工程中运行.这时另外运行一个客户端程序(不一定要在Delphi中运行),当它调用刚才的COM+时,Delphi的COM+工程就会停在你设好的断点上.关键:顺序不要弄反,是先设好组件属性,最后再设Delphi的运行参数.
      

  6.   

    在Delphi7中调试COM+
                                                                                 刘晓明(Cipher)收集整理
           开发COM+应用系统最令人头痛的问题便是如何调试 COM+组件了。由于COM+是执行在COM+的执行环境中,因此Delphi 的程序员无法像Delphi的分布式多层应用系统一样可以直接在 Delphi 的IDE 中设定应用程序服务器的断点来调试。
          事实上, Delphi 仍然可以在 Delphi 的集成开发环境中调试 COM+组件,也可以让程序员在集成开发环境中在COM+组件的程序单元中设定断点,然后执行客户端应用程序调用 COM+组件。此时 Delphi 便会把执行控制权带到Delphi 的集成开发环境中,并且暂停在程序员设定的断点上让程序员开始调试。从此开始,程序员就可以像调试一般的应用程序一样来调COM+组件了。不过要如此调试COM+组件,程序员必须先做一些设定。1、在Delphi 的集成开发环境中激活要被调试的 COM+ 组件项目,点Projects|Options 菜单,在弹出的对话框中选择Linker页,选中其中的include Td32 info 和 include remote debug symbol ;
    2、点 Run|Install Com+ Objects菜单,注册COM+组件,最好是注册到新的应用程序,也可以注册到已有的应用程序(这个应用程序需要是由Delphi 的注册COM程序产生的)。
    3、运行Win2000的 控制面板|管理工具|组件服务,在COM+应用程序中找到刚才COM注册的应用程序,点右键,选择“属性”菜单,在弹出的对话框中,选择“高级”页,选中其中的“在调试器中启动”选项,在下面的调试路径中会有类似如下的内容:"C:\Program Files\Borland\Delphi7\Bin\bordbg70.exe" dllhost.exe /ProcessID:{9CEC476D-83A5-4C2B-AFF1-3E83A147B866}
    4、回到Delphi的集成开发环境,点选Run|Parameters 菜单,在对话框中,HostApplication设为:C:\WINNT\system32\DLLHOST.EXE ,(要根据你的操作系统安装情况设定)。  Parameters 设为:/ProcessID:{9CEC476D-83A5-4C2B-AFF1-3E83A147B866};这个GUID的值要和Win2000组件服务中的属性值一致,可以从那边直接COPY过来。
    5、设置断点,在Delphi的集成开发环境中运行COM;
    6、在Windows中(或新开的Delphi环境中)运行调用这个COM的客户端程序。
    这时会发现,Delphi开发环境中的COM停在断点处了,就可以接下来单步跟踪调试了。
      

  7.   

    com+用得比較少, 不錯, 學多一招
      

  8.   

    1,第一步应该是打开组件管理,把“在调试器中启动”项打勾。
    2.运行RUN|PARAMETERS
      HOST APPLICATION 填入 {系统路径}\system32\dllhost.exe
      PARAMETERS       填入 /processID:{xxxxxxxxxxxxxxxxxxxxxxxxxxxxx}processID是组件管理器中你的COM+中的参数,把“在调试器中启动”项打勾后会看到。
    复制到delphi RUN|PARAMETERS下就行了。3.打开组件管理
      选择组件安装所在的组的属性,在高级这页里选择调试,这里的调试器路径应该设成什么内容? 请具体说明.这个系统默认就可。4.需要打开几个Delphi才能调试?具体怎么操作?客户端是不是也要在Delphi中运行才行.要打开两个DELPHI。最好要调试的COM+应用程序源文件先打开。
    不行的话打delphi和com+的补丁。