如何在 Delphi 環境中除錯 MTS/COM+ 元件
作者:蔡煥麟 (huanlin_tsai@yahoo.com)
日期:Aug-19-2001
在 Windows9x/NT4.x 裡面的 MTS,到了 Windows2000
已和其他服務整合成為 COM+,因此有些東西的名稱也改了,這份文件以
COM+ 為主,如果你的作業平台是 Win9x/NT,你可以參考下面的對照表找到對應的名稱:
|
MTS (Win9x/WinNT) |
COM+ (Win2000) |
管理工具 |
MTS Explorer |
Component Service(元件服務) |
|
Package(套件) |
Application(應用程式) |
代理程式 |
MTX.EXE |
DLLHOST.EXE |
兩種平台的除錯設定的方法也不一樣,分述如下:
Windows9x/NT4.x
- 在 Delphi 中開啟要被除錯的元件專案,然後點選 Run->Parameters,在 Host Application 中輸入 Mtx 的程式路徑,在 Parameters 中輸入 /p:”元件套件名稱”,參考圖一。
- 設定好中斷點後,點選 Run 或按 F9,此時元件就在 Delphi IDE
中被啟動了,接著再執行客戶端程式就行了。
(圖一)
Windows2000
- 開啟 MTS 元件服務,在元件套件上方點一下滑鼠右鍵,接著點選〔內容〕,在〔一般〕頁夾中把應用程式 ID 先複製到到剪貼簿中稍後使用。參考圖二。
- 在 Delphi 中開啟要被除錯的元件專案,然後點選 Run->Parameters,在 Host Application 中輸入 "C:\WINNT\system32\dllhost.exe" (不含引號),在 Parameter 中輸入 "/ProcessID:" 然後把步驟 2
所複製的文字貼上,參考圖三。
- 設定好中斷點後,點選 Run 或按 F9,此時元件就在 Delphi IDE
中被啟動了。接著再執行客戶端程式就行了。
(圖二)
(圖三)
其他事項
- 在除錯元件之前請先確定該元件已經停止,你可以開啟〔元件服務〕管理工具,在元件所在的
COM+
應用程式名稱上面點一滑鼠右鍵,然後按〔停止〕。接著回到 Delphi 中 Run 元件的 project,接著再執行
client
程式,如果所有步驟都正確的話,當元件被啟動了,你可以在
Delphi IDE 的視窗標題上看到 "Delphi 5 - 專案名稱 Running"
的字樣,如果沒有看到 "...Running"
表示可能某個步驟做錯了,請再試一遍。
- 如果你的 COM+ 應用程式的 "閒置至關機時間"
設定為 0 的話,請注意當你在 Delphi IDE 中啟動元件之後,要立刻去執行客戶端程式,否則大約過幾秒鐘在
Delphi 中啟動的元件就被釋放掉了,也就因此無法除錯該元件了。如果你要修改"閒置至關機時間",可以開啟〔元件服務〕,在元件所屬的應用程式的名稱上面點一下滑鼠右鍵,選"內容",再切換至"進階"頁夾,預設值是
3 分鐘。
- 在 WindowsNT/2000 環境下你可以同時除錯 client 程式與 MTS 元件,只要將這些專案加入一個 project group,在 client 與
MST/COM+ 元件的程式中先設定好中斷點,然後先執行 MTS/COM+
元件(一定要在 Delphi 環境中執行),接下來再執行
client 就行了。在 Windows9x
的環境則不允許同時對兩個以上的 process 除錯。
Trouble-shooting
如果照上面的說明仍無法在 Delphi IDE
中除錯元件的話,請檢查下列事項:
- 檢查元件所屬的 COM+ 應用程式的"內容",把〔安全設定〕頁夾裡的
"呼叫的驗證等級" 設為 "無","驗證等級"
設為 "模擬"。〔識別〕頁夾裡選擇 "互動的使用者",如果選擇 "這個使用者"
的話,請填入具有
Administrator 身份的使用者名稱及密碼。
- 如果在 Wind98 環境下一直無法除錯元件,可以試試看把 Project | Options 的 Linker
頁夾的 "Include remote debug symbol" 項目打勾然後重新
build。
http://geocities.datacellar.net/huanlin_tsai/