IIS 4.0 以降のバージョンを使用したデバッグ

ビューの切り替え:
スクリプトなし
Visual Studio
IIS 4.0 以降のバージョンを使用したデバッグ

IIS 4.0 以降では、サーバー コンポーネントとインターネット サーバー拡張 DLL のデバッグ環境を設定する方法が複数あります。これらの手順については次の各セクションで解説します。

Windows NT プロセスにアタッチできるデバッガ

デバッガを Windows NT プロセスにアタッチできる場合は、この機能を使用してコンポーネントや拡張機能をデバッグできます。

Visual Studio で IIS 4.0 以降の DLL をデバッグするには

  1. iisadmin プロセスを起動します。コマンド ラインから起動するには、net start iisadmin コマンドを使用します。[コントロール パネル] の [サービス] ダイアログ ボックスから起動するには、IIS Admin サービスを起動します。
  2. Visual Studio で、[デバッグ] メニューの [プロセス] をクリックします。
  3. [プロセス] ダイアログ ボックスで、[システム プロセスを表示] チェック ボックスをオンにします。
  4. [選択可能なプロセス] ボックスの [inetinfo] プロセスを選択します。
  5. [アタッチ] をクリックします。
  6. [プロセスにアタッチ] ダイアログ ボックスで、[デバッグするプログラムの種類を選択します] の下の [Native] がオンになっていることを確認します。
  7. World Wide Web 発行サービス (w3svc) を起動します。コマンド プロンプトから net start w3svc と入力して起動するか、コントロール パネルの [サービス] を使用して次の手順で起動します。
    1. [スタート] ボタンをクリックし、[設定] をポイントし、[コントロール パネル] をクリックします。
    2. [コントロール パネル] で、[管理ツール] アイコンをダブルクリックします。
    3. [管理ツール] ウィンドウで、[サービス] をダブルクリックします。
    4. [サービス] ダイアログ ボックスで、[World Wide Web Publishing Service] を右クリックし、ショートカット メニューの [開始] をクリックします。

Windows NT プロセスにアタッチできないデバッガ

Visual Studio デバッガ以外の、Windows NT プロセスにアタッチできないデバッガを使用している場合は、次の手順でデバッグ環境を設定します。

Visual Studio 以外のデバッガで IIS 4.0 以降の DLL をデバッグするには

  1. [コントロール パネル] の [サービス] を開きます。
  2. [IIS Admin] をクリックし、[スタートアップ] をクリックします。
  3. [デスクトップとの対話をサービスに許可] チェック ボックスをオンにし、[OK] をクリックします。
  4. IIS Admin プロセスの下で実行するすべてのプロセス (World Wide Web 発行サービスや FTP 発行サービスなど) に対して操作手順 2. と 3. を繰り返します。
  5. レジストリ エディタ (REGEDIT) を使用して、Inetinfo.Exe というサブキーを HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options キーに追加します。
  6. この新しいキーに次のエントリを追加します。

    Debugger = <DebuggerExeName> DebuggerExeName は使用するデバッガの完全パスです。

World Wide Web 発行サービスが起動すると、デバッガも起動します。これで、インターネット サーバー拡張 DLL にブレークポイントを設定できます。

コンポーネント ソース コードへのブレークポイントの設定

デバッグする言語によっては、あらかじめコンポーネントをメモリに読み込んでおかないと、コンポーネントのソース コードにブレークポイントを設定できないことがあります。

ブレークポイントを設定して機能させるには

  1. Internet Explorer を起動し、オブジェクトの入った .asp ページを表示します。

    ページが読み込まれると、コンポーネントにブレークポイントを設定できるようになります。

  2. [更新] をクリックしてページを再表示すると、選択したブレークポイントで実行が停止します。

    コンポーネントを一度も読み込むことができない場合 (コンポーネントのスタートアップ コードでエラーが発生する場合など) は、デバッグ セッションを開始する前に、コンポーネント DLL を読み込む必要があります (下記の操作手順 11. ~ 14. を参照)。

Windows NT のセキュリティ特権の設定と IIS 4.0 DLL のデバッグ

場合によっては、上記の手順を使用できないことがあります。そのような場合は、第 3 の方法 (IIS の以前のバージョンでも使用されていた方法) を採用します。この方法では、Windows NT のセキュリティ特権を設定するほかに、レジストリを変更する必要があります。また、IIS をサービスとして実行できなくなります。上の 2 つの方法を使用できない場合に限り、この第 3 の方法を使用してください。

Windows NT のセキュリティ特権を設定して IIS 4.0 DLL をデバッグするには

  1. ドメイン ユーザー マネージャ管理ツール (USRMGR) を使用して、インターネット サーバー拡張 DLL のデバッグに使用する Windows NT アカウントに、ローカル コンピュータ上の特権である [サービスとしてログオン]、[オペレーティング システムの一部として機能]、および [セキュリティ監査の生成] を追加します。
  2. 分散 COM の構成ユーティリティ (DCOMCNFG) を使用して、IIS Admin サービスの ID をデバッグ用アカウントに合わせて変更します。
  3. レジストリ エディタ (REGEDIT) を使用して、HKEY_CLASSES_ROOT\AppID の下にあるすべての IISADMIN 関連サブキーから LocalService キーワードを削除します。このキーワードは以下のサブキーにあります。

    {61738644-F196-11D0-9953-00C04FD919C1} // IIS WAMREG admin Service

    {9F0BD3A0-EC01-11D0-A6A0-00A0C922E752} // IIS Admin Crypto Extension

    {A9E69610-B80D-11D0-B9B9-00A0C922E750} // IISADMIN Service

    LocalService キーワードは AppID の追加サブキー群で使用されている場合もあります。

  4. レジストリの CLSID ノードの下にあるすべての IISADMIN 関連サブキーに、LocalServer32 サブキーを追加します。つまり、前の操作手順で削除したすべてのサブキーに対応するサブキーを追加します。新しいキーの既定値として <path>\inetinfo.exe -e w3svc を設定します。通常、<path> は "c:\winnt\system32\inetsrv" です。
  5. Microsoft 管理コンソールまたはコントロール パネルの [サービス] ダイアログ ボックスで WWW サービスと FTP サービスを停止します。
  6. Visual Studio のソリューション エクスプローラで、プロジェクトを選択します。
  7. [表示] メニューの [プロパティ ページ] をクリックします。
  8. [プロパティ ページ] ダイアログ ボックスで、[構成プロパティ] フォルダの下の [デバッグ] ページを選択します。
  9. プロパティ グリッドの [コマンド] フィールドに、次のように入力します。

    C:\WINNT\System32\Inetsrv\Inetinfo.exe

  10. プロパティ グリッドの [コマンド引数] フィールドに、次のように入力します。

    -e w3svc

  11. [リンカ] フォルダを開きます。
  12. [出力ファイル] フィールドに、デバッグするインターネット サーバー拡張 DLL の名前とパスを入力します。
  13. [OK] をクリックします。
  14. デバッグを開始するには、[デバッグ] メニューの [開始] をクリックします。
    メモ   デバッグ セッションが終了したら、操作手順 5. から 1. (逆順) を行って以前の設定に戻し、IIS をサービスとして実行できるようにします。

参照   

ISAPI アプリケーションのデバッグ | Visual C++ のデバッグ