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

文書翻訳 文書翻訳
文書番号: 238788 - 対象製品
この記事は、以前は次の ID で公開されていました: JP238788
すべて展開する | すべて折りたたむ

目次

概要

この資料の内容

この資料では、インターネット インフォメーション サービス (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 サイトからダウンロードできます。
Microsoft デバッグ ツール
http://www.microsoft.com/whdc/devtools/debugging/default.mspx

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

サービス (または 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
273639 [IIS] デバッガ環境で IISAdmin サービスとそれに依存するサービスを開始する方法
286350 HOW TO: Use ADPlus to Troubleshoot "Hangs" and "Crashes"
286350 [IIS] HOWTO: Autodump+ を使用したトラブルシューティング方法
261871 INFO: COM+ and MTS Debugging Resources
261871 [INFO] COM+ および MTS のデバッグに関するリソース
183480 HOW TO: Debug ISAPI DLLs Under IIS 4.0 and IIS 5.0
183480 [HOWTO] IIS 4.0 と IIS 5.0 での ISAPI DLL のデバッグ
170738 Debugging a Windows NT Service

関連情報

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

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

プロパティ

文書番号: 238788 - 最終更新日: 2007年12月4日 - リビジョン: 4.2
この資料は以下の製品について記述したものです。
  • Microsoft Internet Information Server 2.0
  • Microsoft Internet Information Server 3.0
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Services 5.0
  • Microsoft Internet Information Services 5.1
  • Microsoft Internet Information Services 6.0
キーワード:?
kbhowto kbhowtomaster kbcgi KB238788
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com