如何在2000SERVER上调试MTS??(50分)

  • 主题发起人 主题发起人 小邱
  • 开始时间 开始时间
李维的ADO的书上讲得很详细的,佻可以参考一下.
 
to hbezwwl:按照他的书不行!!!
 
1.在管理工具的组件服务里找到你的套间组件,
右键点击套间组件,选择高级页,在调试器中启动前面打勾。
选择调试器路径为
C:/Program Files/Borland/Delphi6/Bin/delphi32.exe dllhost.exe /ProcessID:{97480691-4D7C-4968-9400-9F8C0D71E2DF}
其中的{*******}为你的套间组件ID,就是常规页面上的应用程序ID。
2。Delphi打开你的组件程序,在Run菜单的Parameters中设置
Host Application:c:/WINNT/system32/dllhost.exe
Parameters:/processID:{97480691-4D7C-4968-9400-9F8C0D71E2DF}
{*******}就是你的套间组件ID。
3。在组件程序中设置断点,点击Run执行你的组件程序。
4。执行你的调用Application,会停在组件程序的断点上。
good luck!
 
那个方法稍微变通一下就行了的.大致相同.
 
to GanQuan:组件程序不能RUN!
运行调用程序后,不会到组件断点处。
调用程序:‘OLE服务无法绑定对象’……
 
不要管他,设定好后Run就行了,可以的!
照上面的步骤作!!
 
1.操作系统为2000Server
2.套间组件ghtmts,组件:PmtsGH.mtsGH,
右键点击套间组件,选择高级页,在调试器中启动前面打勾。
选择调试器路径为
"C:/Program Files/Borland/Delphi6/Bin/bordbg60.exe "dllhost.exe /ProcessID:{CBD3C605-C864-4CE8-B6E8-9E33FE32ACCD}
改为:
C:/Program Files/Borland/Delphi6/Bin/delphi32.exe dllhost.exe /ProcessID:{CBD3C605-C864-4CE8-B6E8-9E33FE32ACCD}
3.Delphi打开组件程序,在Run菜单的Parameters中设置
Host Application:c:/WINNT/system32/dllhost.exe
Parameters:/ProcessID:{CBD3C605-C864-4CE8-B6E8-9E33FE32ACCD}
4.组件PmtsGH.mtsGH其中的一个方法:
…………
function TmtsGH.RegSubtractFee(const UserId: WideString;
MemberId: Integer;
const Tel: WideString;
Channel: Integer;
const Ghm,
ThisNext, Time, Medicare, Jzkh, Zrg: WideString;
Zx_id: Integer;
out svrfee, regfee, diagfee, fee: Integer): WideString;
begin
try
……
Setcomplete;
Except
on Exceptiondo
begin
SetAbort;
raise;
end;
end;
end;
……
在该方法前面设置一断点
然后按运行(f9),过一小段时间他又会处于编辑状态
5。调用程序:
uses PmtsGH_TLB……
procedure TFGuaHao.bbGuaHaoClick(Sender: TObject);
var
mtsGHObj:ImtsGH;
s:string;
begin
mtsGHObj:=ComtsGH.CreateRemote ('ght');-----(1)
s:=mtsGHObj.RegSubtractFee(UserId,Realuser,'3790808',4,Ghm,'131','11:30','0','7654321','1',3,svrfee,regfee,diagfee,fee);
showmessage(s);
end
当运行到(1)时,出错:‘无法创建终结点’,根本无法到组件断点!!!
谁能帮忙?加分!!!
 
你的问题有点怪!
检查一下组件属性中套间组件属性高级页中关闭服务器进程选项,
你写了几分钟空闲时关闭进程,给长一点,或者选择不关闭,以后自己手动关闭。
还有你的调用程序不用在Delphi中执行,执行Exe就行了。
 
我以前也遇到过类似的问题,调试选项'Use Debug DCUs'要钩上或者
设置'Search path'为'$(DELPHI)/Lib/Debug'才能停在断点上(保证其他设置正确)
 
啊,是这样,我遇到过
1。首先把所有调试勾、RUN、Parameters除去
2。在DCOMconnection 处重新选择正确的SERVERNAME,激活DCOM看是否可以为true
3.要调试可以按上面他们说的调试,但记住,必须在RUN之前编译程序!
OK?不知道能不能解决你的问题!
 
"C:/Program Files/Borland/Delphi6/Bin/bordbg60.exe "dllhost.exe /ProcessID:{CBD3C605-C864-4CE8-B6E8-9E33FE32ACCD}
改为:
C:/Program Files/Borland/Delphi6/Bin/delphi32.exe dllhost.exe /ProcessID:{CBD3C605-C864-4CE8-B6E8-9E33FE32ACCD}
之后,执行调用程序之后会调出DELPHI6.0 ,然后出现:error loading type library c:/winnt/system/dllhost.exe
然后调用程序出现:ole无法绑定对象
 
2000server 应该是com+
Subject: How-to enable a COM+ application component to launch Delphi debugger.
Author : Igor P. Zenkov
Date : Oct 3, 2001
1. Open project in the Delphi IDE.
2. Run | Parameters…
run中写 c:/winnt/system32/dllhost32.exe
Parameters中写 /ProcessID:{A172E1AC-7D43-4F1A-97BE-7CD3EB913228}
3. In the ‘Host Application’ edit box enter the fully qualified path for DLLHOST.EXE
.
4. In the ‘Parameters’ edit box enter an argument specifying the application ID of the COM+ application containing the component.
Note: Using the Component Services administrative tool, you will find the application ID on the General tab of the COM+ application's Properties dialog box.

5. Set breakpoint in the editor window.
6. Run | Run
 
为此,我做了一个最简单的COM+组件,他只有一个方法:
procedure Tcomtext.text(const ss: WideString);在这里设置断点
begin
if length(ss)>2 then
showmessage('2'+ss)
else
showmessage('1'+ss);
end;
客户端:
uses Ptext_tlb;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
obj:Icomtext;
begin
obj:=CoComtext.create;
obj.text('yes or no?');
end;
并不会执行在断点处,而是直接返回‘2yes or no?’
为什么???
 
最简单的例子,试了好几台机子都不行,都会直接返回结果,而不会运行到断点处?
为什么??
 
我也碰到过这个问题,至今没法解决,不能设断点这程序怎么写呀?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1146732
 
多人接受答案了。
 
后退
顶部