CGI アプリケーションのデバッグ

Just-In-Time デバッガーと CBL_DEBUGBREAK の埋め込み呼び出しを使用するか、プロジェクトのプロパティの [Wait for debuggable attachment] または [Launch URL] デバッグ オプションを使用して、CGI アプリケーションをデバッグできます。サービスとして実行されるように Web サーバーが構成されている場合は、デバッガーが CGI プロセスにアタッチすることを許可するために、管理者権限が必要になります。

ヒント: デバッガーでプログラムのシンボルを見つけることができない場合は、CGI シンボルのパスをシンボル パスに追加できます。これは、Visual Studio の [オプション] の [デバッグ > シンボル] ページから行います。次に例を示します。c:\apache2.2\cgi-bin というパスを使用します。

[Launch URL] 開始オプションを使用してネイティブ CGI プロジェクトをデバッグできます。

[Wait for debuggable attachment] を使用したデバッグ

  1. Web サーバーを起動します。
  2. CGI バイナリが Web サーバー上のフォルダーにあり、そのフォルダー内での CGI の実行が有効になっていることを確認します。
  3. IDE を起動します。
    注:
    • CGI がサービスとして実行されている場合は、管理者権限で Visual Studio を起動する必要があります。
    • httpd 実行可能ファイルを使用して、コマンド ラインから Apache Web サーバーを実行できます。この実行可能ファイルでは独自のユーザー ID を使用するため、管理者権限で IDE を起動する必要はありません。
  4. IDE で、[プロジェクト > myproject のプロパティ] をクリックし、[デバッグ] タブを選択します。
  5. 次のいずれかのデバッグ オプションを選択します。
    1. [Launch] を [Launch Browser] に設定し、[Launch Browser] フィールドでアプリケーションの URL を指定します (例:http://localhost:80/cgiform1.htm)。

      このオプションで正しい CGI を待機するようにするには、プロジェクトの出力フォルダー、または [デバッグ] タブの [Working Directory] 設定で指定されているパスが、Web サーバーの CGI フォルダーと一致している必要があります。

    または

    1. [Launch] を [Wait for debuggable attachment] に設定し、[Wait for directory] を指定します。
    2. [Working Directory] フィールドで CGI フォルダーのパスを指定します。

    さらに

    1. CGI アプリケーションを複数回デバッグする場合は、[Return to waiting state when debugging] をオンにします。
  6. [Debug > Start Debugging] をクリックします。

    デバッガーは CGI アプリケーションが実行されるまで待機してから、そのアプリケーションにアタッチします。

URL を使用したデバッグ

  1. Visual Studio を管理者として起動します。

    アプリケーションが IUSR アカウントで実行されるため、デバッガーがプロセスにアタッチするための適切な権限が必要になります。

  2. ソリューションを読み込んでビルドします。

    サイトのディレクトリ構造を作成します。

  3. アプリケーションを実行するように Web サーバーが構成されていることを確認します。

    IIS については、「CGI サポートの有効化」の手順を参照してください。

  4. プロジェクトのプロパティの [デバッグ] タブで、[Launch] を [Launch Browser] に設定します。
  5. URL を http://localhost:port/myappform.htm に設定します。
  6. デバッグを開始します。

    起動したブラウザー インスタンスでフォームに入力して送信します。アプリケーションが実行されると、デバッガーが停止します。

CBL_DEBUGBREAK および Just-In-Time デバッガーを使用したデバッグ

CBL_DEBUGBREAK の呼び出しをコードに埋め込み、その呼び出しを使用して CGI をデバッグすることもできます。CGI が実行されて呼び出しに到達すると、管理者権限による CGI のデバッグを許可するよう求める Just-In-Time デバッグの通知が表示されます。

または、上記のように IDE を起動し、呼び出しに到達したら自動的に CGI のデバッグを開始するように構成することもできます。プロジェクトのプロパティの [デバッグ] タブで、次のようにオプションを指定する必要があります。[Launch] を [Wait for debuggable attachment] に設定し、[Wait for any program] を指定します。

注: IIS 7.5 で実行される CGI をデバッグする場合は、[Wait for debuggable attachment] オプションのいずれかを使用する必要があります。デフォルトでは、このアプリケーションは、「ApplicationPoolIdentity」を使用して、Just-In-Time デバッグのプロンプトを表示しないようにする CGI を実行します。