次の方法で共有


Visual C++ で記述されたコンポーネントのデバッグ

Microsoft Visual C++ コンポーネントで COM+ 機能をデバッグする準備ができたら、デバッガーを起動するように Visual C++ プロジェクトまたはコンポーネント サービス管理ツールを構成できます。 Visual C++ を使用している場合は、OLE RPC と Just-In-Time (JIT) デバッグを使用してリモート クライアントでデバッグできます。 デバッガーでクライアントを実行できない場合、またはクライアントが別のコンピューターで実行されている場合は、デバッガーで COM+ 起動設定を使用できます。 これは、コンポーネント サービス管理ツールの [COM+ アプリケーションのプロパティ] ダイアログ ボックスの [詳細設定] タブの [チェック] ボックスに表示されます。

デバッグが完了したら、デバッグする COM+ アプリケーションをシャットダウンする必要があります。 サーバー プロセスが実行したままの場合は、既存の DLL がまだメモリに読み込まれているときに、次回 DLL をビルドしようとしたときにエラー メッセージが表示されることがあります。 COM+ アプリケーションをシャットダウンするには、コンソール ツリーでアプリケーションを右クリックし、[シャットダウン] をクリックします

Note

トランザクションを使用している場合は、トランザクションのタイムアウト (既定値は 60 秒) を増やすこともできます。 また、値 0 を指定して、実質的に無限トランザクションタイムアウト期間を指定することもできます。 コンポーネント サービス管理ツールを使用して、[マイ コンピューターのプロパティ] ウィンドウの [オプション] タブでトランザクションのタイムアウト設定を変更します。

 

Visual C++ を使用したサーバー アプリケーション コンポーネントのデバッグ

COM+ サーバー アプリケーションをデバッグする場合は、クライアントとサーバー アプリケーションの両方をデバッガーに読み込んでリモート呼び出しをデバッグできます。 Visual C++ を使用すると、Just-In-Time (JIT) と OLE RPC の設定を使用して、コンポーネントへのリモート呼び出しをデバッグできます。 JIT 設定により、エラーが発生したときにコンパイル済みコンポーネントが Visual C++ デバッガーを起動します。OLE RPC 設定を使用すると、コードをステップ実行するときにデバッガーでクライアントからコンポーネントにステップ実行できます。

これらの機能が有効になっている場合は、デバッガーでクライアントを起動できます。 クライアントがコンポーネントを呼び出すと、サーバーがネットワーク上の別のコンピューター上にある場合でも、デバッガーはサーバー プロセスでコンポーネントのコードにステップ インします。 必要に応じて、サーバー コンピューターでデバッグ セッションが自動的に開始されます。 同様に、コンポーネントのコード内の return ステートメントを 1 回ステップ実行すると、クライアントのコード内の次のステートメントにデバッグが返されます。

Note

デバッガー設定で COM+ 起動を使用して、いくつかの手順を保存できる場合があります。 これにより、Visual C++ 環境で特別なデバッグ設定を行わなくても、Visual C++ (またはその他) デバッガーを指定できます。 これは、コンポーネント サービス管理ツールの [COM+ アプリケーションのプロパティ] ダイアログ ボックスの [詳細設定] タブの [チェック] ボックスに表示されます。 詳細については、このトピックの「Visual C++ を使用しないデバッグ」を参照してください。

 

コンポーネントを含む COM+ アプリケーションがサーバー アプリケーションの場合は、まずコンポーネント サービス管理ツールを使用してアプリケーションをシャットダウンする必要があります。 これを行うには、コンソール ツリーで COM+ アプリケーションを右クリックし、[シャットダウン] をクリックします

Visual C++ で RPC デバッグを有効にするには

  1. Visual Studio の [ツール] メニューで、[オプション]をクリックします。

  2. [オプション] ダイアログ ボックスの [デバッグ] タブで、[OLE RPC デバッグ] ボックスと [Just-in-time デバッグ] チェック ボックスを選択します。

  3. OK をクリックします。

デバッグを開始するには、デバッガーでクライアント プロジェクトを開始します。

デバッガーでクライアントを起動せずに、コンポーネントをデバッグすることもできます。 この場合、コンポーネントは独自にデバッガーを起動する必要があります。 これを行うには、コンポーネント プロジェクトで、COM+ アプリケーション ID と共にデバッグ セッションの実行可能ファイルを指定する必要があります。

サーバー アプリケーション コンポーネントが Visual C++ デバッガーを起動できるようにするには

  1. メニューで [プロジェクトの設定] をクリックします。

  2. [プロジェクト 設定] ダイアログ ボックスの [設定 For] ボックスで、[Win32 デバッグ] を選択します。

  3. [デバッグ] タブの [カテゴリ] ボックスで、[全般] を選択します。

  4. [デバッグ セッションの実行可能ファイル] ボックスに、Dllhost.exeの完全修飾パスを入力し、その後にコンポーネントを含む COM+ アプリケーションのアプリケーション ID を指定する引数を入力します。

    Note

    コンポーネント サービス管理ツールを使用すると、COM+ アプリケーションの [プロパティ] ダイアログ ボックスの [全般] タブにアプリケーション ID が表示されます。 例を次に示します。

     

    Note

    C:\Winnt\System32\Dllhost.exe /ProcessID:{applicationID}

     

  5. OK をクリックします。

ブレークポイントの設定、デバッガーの起動、コンポーネントの呼び出しの開始ができるようになりました。

Visual C++ を使用したライブラリ アプリケーション コンポーネントのデバッグ

ライブラリ アプリケーションでコンポーネントをデバッグするには、クライアントのプロセスでライブラリ アプリケーションがホストされるため、クライアントのプロジェクトを構成する必要があります。

Visual C++ でライブラリ アプリケーションのデバッグを有効にするには

  1. メニューで [プロジェクトの設定] をクリックします。

  2. [プロジェクト 設定] ダイアログ ボックスの [設定 For] ボックスで、[Win32 デバッグ] をクリックします

  3. [デバッグ] タブの [カテゴリ] ボックスで、[その他の DLL] をクリックします

  4. モジュール一覧で、ライブラリ アプリケーションにコンポーネント DLL を追加します。 これにより、DLL が実際に読み込まれる前にブレークポイントを設定できます。

  5. OK をクリックします。

Visual C++ を使用しないデバッグ

デバッグに Visual C++ を使用しているかどうかに関係なく、デバッガーで起動設定を使用して、コンポーネントを実行するデバッガーを指定できます。

コンポーネント サービス管理ツールからデバッガーを指定するには

  1. コンソール ツリーで、デバッグするコンポーネントを含む COM+ ライブラリ アプリケーションを選択します。

  2. [アプリケーション] を右クリックし、[プロパティ] をクリックします。

  3. [画面のプロパティ] ダイアログ ボックスで、 [表示形式] タブをクリックします。

  4. [デバッグ] で、[デバッガーで起動] チェック ボックスを選択します。

  5. [デバッガー パス] ボックスに、使用するデバッガーへのパスを入力します。 [参照] をクリックしてデバッガーを見つけることもできます。 C:\Winnt\System32\Ntsd.exe の例を次に示します。

  6. OK をクリックします。

Visual Basic で記述されたコンポーネントのデバッグ