Delphi7 での COM+ のデバッグ
Liu Xiaoming (Cipher) によって収集および編集されました。
COM+ アプリケーション システムの開発で最も厄介な問題は、COM+ コンポーネントをデバッグする方法です。 COM+ は COM+ 実行環境で実行されるため、Delphi プログラマは、Delphi の分散多層アプリケーション システムのように、Delphi の IDE でデバッグするためにアプリケーション サーバーにブレークポイントを直接設定できません。
実際、Delphi では引き続き、Delphi の統合開発環境で COM+ コンポーネントをデバッグしたり、プログラマが統合開発環境の COM+ コンポーネントのプログラム ユニットにブレークポイントを設定して、クライアント アプリケーションを実行して COM+ コンポーネントを呼び出すことができます。この時点で、Delphi は実行制御を Delphi の統合開発環境にもたらし、プログラマがデバッグを開始できるようにプログラマが設定したブレークポイントで一時停止します。今後、プログラマは通常のアプリケーションをデバッグするのと同じように COM+ コンポーネントをデバッグできるようになります。ただし、この方法で COM+ コンポーネントをデバッグするには、プログラマは最初にいくつかの設定を行う必要があります。
1. Delphi の統合開発環境でデバッグする COM+ コンポーネント プロジェクトをアクティブ化し、[プロジェクト] | [オプション] メニューをクリックし、ポップアップ ダイアログ ボックスで [リンカー] ページを選択し、[Td32 情報を含める] と [リモート デバッグ シンボルを含める] を選択します。
2. [Run|Install Com+ Objects] メニューをクリックして、COM+ コンポーネントを新しいアプリケーションまたは既存のアプリケーションに登録します (このアプリケーションは、Delphi の登録済み COM プログラムによって生成される必要があります)。
3. Win2000 管理ツール | コンポーネント サービスを実行し、COM+ アプリケーションで COM 登録アプリケーションを見つけて右クリックし、ポップアップ ダイアログ ボックスで [プロパティ] メニューを選択し、[詳細] ページを選択します。 「デバッガーで開始」オプションを選択すると、以下のデバッグ パスに次のような内容が表示されます: 「C:/Program Files/Borland/Delphi7/Bin/bordbg70.exe」 dllhost.exe /プロセスID:{9CEC476D-83A5-4C2B-AFF1-3E83A147B866}
4. Delphi の統合開発環境に戻り、[実行] | [パラメータ] メニューをクリックし、ダイアログ ボックスで Hostapplication を C:/WINNT/system32/DLLHOST.EXE に設定します (これはオペレーティング システムのインストール状況に応じて設定する必要があります)。パラメータは /ProcessID:{9CEC476D-83A5-4C2B-AFF1-3E83A147B866} に設定されます。この GUID の値は Win2000 コンポーネント サービスの属性値と一致している必要があり、そこから直接コピーできます。
5. ブレークポイントを設定し、Delphi の統合開発環境で COM を実行します。
6. この COM を呼び出すクライアント プログラムを Windows (または新しく開いた Delphi 環境) で実行します。
この時点で、Delphi 開発環境の COM がブレークポイントで停止していることがわかり、シングル ステップの追跡とデバッグを続行できます。