[HOWTO] IIS 下で動作する CGI アプリケーションを Visual Studio を使用してデバッグする方法

概要

この資料の内容

この資料では、インターネット インフォメーション サービス (IIS) 下で動作する CGI アプリケーションを Visual Studio の任意のバージョンを使用してデバッグする方法について、順を追って説明しています。


Visual Studio を使用して Visual C の CGI アプリケーションをデバッグする

Visual Studio の任意のバージョンを使用して Visual C の CGI アプリケーションをデバッグするには、次の手順を実行します。

  1. IIS Admin Service がデスクトップと対話する必要があります。この構成を行うには、次の手順を実行します。
    1. [コントロール パネル] を開き、次の手順を実行します。
      • Windows NT の場合は、[サービス] をクリックします。
      • Windows 2000、Windows XP、および Windows Server 2003 の場合は、[管理ツール] をクリックし、[サービス] をクリックします。
    2. [IIS Admin Service] をダブルクリックします。
    3. [ログオン] タブで、[デスクトップとの対話をサービスに許可] チェック ボックスをオンにします。


      : この資料では、IIS Admin Service は Local System として実行されることを前提としています。
    4. IIS Admin Service を停止して、再開します。
  2. windows.h ファイルをインクルードする前に、次のコードを追加し、CGI のデバッグ バージョンをビルドします。
    #define _WIN32_WINNT 0x0400
  3. CGI の先頭に次のコードを貼り付けます。
    #ifdef _DEBUG
    char szMessage [256];
    wsprintf (szMessage, "Please attach a debugger to the process 0x%X (%s) and click OK",
    GetCurrentProcessId(), argv[0]);
    MessageBox(NULL, szMessage, "CGI Debug Time!",
    MB_OK|MB_SERVICE_NOTIFICATION);
    #endif
  4. この CGI アプリケーションを開始します。
  5. メッセージ ボックスが表示されたら、CGI プロセスにデバッガ (WinDBG や Visual C など) をアタッチします。
  6. デバッガがアタッチされたら、ソース ファイルを開き、ブレーク ポイントを設定して、[OK] をクリックします。


    メッセージ ボックスが閉じると、CGI プログラムは再開され、ブレーク ポイントにヒットします。

WinDBG を使用する

WinDBG で CGI アプリケーションをデバッグするために、コードを変更する必要はありませんが、WinDBG に習熟し、デバッグ ツールをインストールする必要があります。デバッグ ツールは、次のマイクロソフト Web サイトからダウンロードできます。

サービスのオプションを設定する

サービス (または CGI プログラム) が開始される際に、デバッガ下で実行されるように、Image File Execution Options を設定します。前に説明したように、サービスはデスクトップと対話できる必要があります。デスクトップと対話できないと、CGI プログラムが開始されてデバッガが読み込まれても、表示されません。
  1. レジストリ エディタ (Regedt32.exe) を起動します。


    [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。regedt32 と入力し、Enter キーを押します。
  2. 次のレジストリ キーに移動します。
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
  3. 使用する CGI の実行可能ファイル名 (MyCGI.exe など) でサブキーを作成します。
  4. このサブキーに、Debugger という名前の REG_SZ 値を追加し、デバッガに対する完全パスから ".exe" 拡張子を省略したパスを指定します。デバッガに対するコマンドを追加することもできます。WinDBG は、デフォルトでは次の場所にインストールされます。
    "Debugger"="C:\\Debuggers\\windbg.exe"
    : WinDBG デバッガの場所を示すパスには、空白やファイル拡張子を含めないようにしてください。たとえば、windbg の場合は、次のように指定します。
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\yourCGI.exe "Debugger"="C:\windbg"
  5. レジストリ エディタを閉じます。
  6. IISAdmin Service を停止してから開始し、次に CGI プログラムを実行します。


    : デフォルトのデスクトップにデバッガを表示するには、IIS Admin Service は Local System として実行し、[デスクトップとの対話をサービスに許可] チェック ボックスをオンにする必要があります。これを行うには、前に説明した操作の手順 1. を実行します。
  7. このサービスの実行可能ファイルのイメージがメモリに読み込まれると、デバッガが開始されます。

関連情報

デバッグの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
273639 HOW TO: Start IISAdmin and Dependent Services Under a Debugger
286350 HOW TO: Use ADPlus to Troubleshoot "Hangs" and "Crashes"
261871 INFO: COM+ and MTS Debugging Resources
183480 HOW TO: Debug ISAPI DLLs Under IIS 4.0 and IIS 5.0
170738 Debugging a Windows NT Service

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 238788 (最終更新日 2003-05-21) を基に作成したものです。


この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。
プロパティ

文書番号:238788 - 最終更新日: 2007/12/04 - リビジョン: 1

フィードバック