IIS 4.0 以降では、サーバー コンポーネントとインターネット サーバー拡張 DLL のデバッグ環境を設定する方法が複数あります。これらの手順については次の各セクションで解説します。
- Windows NT プロセスにアタッチできるデバッガ
- Windows NT プロセスにアタッチできないデバッガ
- コンポーネント ソース コードへのブレークポイントの設定
- Windows NT のセキュリティ特権の設定と IIS 4.0 DLL のデバッグ
Windows NT プロセスにアタッチできるデバッガ
デバッガを Windows NT プロセスにアタッチできる場合は、この機能を使用してコンポーネントや拡張機能をデバッグできます。
Visual Studio で IIS 4.0 以降の DLL をデバッグするには
- iisadmin プロセスを起動します。コマンド ラインから起動するには、
net start iisadminコマンドを使用します。[コントロール パネル] の [サービス] ダイアログ ボックスから起動するには、IIS Admin サービスを起動します。 - Visual Studio で、[デバッグ] メニューの [プロセス] をクリックします。
- [プロセス] ダイアログ ボックスで、[システム プロセスを表示] チェック ボックスをオンにします。
- [選択可能なプロセス] ボックスの [inetinfo] プロセスを選択します。
- [アタッチ] をクリックします。
- [プロセスにアタッチ] ダイアログ ボックスで、[デバッグするプログラムの種類を選択します] の下の [Native] がオンになっていることを確認します。
- World Wide Web 発行サービス (w3svc) を起動します。コマンド プロンプトから
net start w3svcと入力して起動するか、コントロール パネルの [サービス] を使用して次の手順で起動します。- [スタート] ボタンをクリックし、[設定] をポイントし、[コントロール パネル] をクリックします。
- [コントロール パネル] で、[管理ツール] アイコンをダブルクリックします。
- [管理ツール] ウィンドウで、[サービス] をダブルクリックします。
- [サービス] ダイアログ ボックスで、[World Wide Web Publishing Service] を右クリックし、ショートカット メニューの [開始] をクリックします。
Windows NT プロセスにアタッチできないデバッガ
Visual Studio デバッガ以外の、Windows NT プロセスにアタッチできないデバッガを使用している場合は、次の手順でデバッグ環境を設定します。
Visual Studio 以外のデバッガで IIS 4.0 以降の DLL をデバッグするには
- [コントロール パネル] の [サービス] を開きます。
- [IIS Admin] をクリックし、[スタートアップ] をクリックします。
- [デスクトップとの対話をサービスに許可] チェック ボックスをオンにし、[OK] をクリックします。
- IIS Admin プロセスの下で実行するすべてのプロセス (World Wide Web 発行サービスや FTP 発行サービスなど) に対して操作手順 2. と 3. を繰り返します。
- レジストリ エディタ (REGEDIT) を使用して、Inetinfo.Exe というサブキーを HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options キーに追加します。
- この新しいキーに次のエントリを追加します。
Debugger = <DebuggerExeName>DebuggerExeName は使用するデバッガの完全パスです。
World Wide Web 発行サービスが起動すると、デバッガも起動します。これで、インターネット サーバー拡張 DLL にブレークポイントを設定できます。
コンポーネント ソース コードへのブレークポイントの設定
デバッグする言語によっては、あらかじめコンポーネントをメモリに読み込んでおかないと、コンポーネントのソース コードにブレークポイントを設定できないことがあります。
ブレークポイントを設定して機能させるには
- Internet Explorer を起動し、オブジェクトの入った .asp ページを表示します。
ページが読み込まれると、コンポーネントにブレークポイントを設定できるようになります。
- [更新] をクリックしてページを再表示すると、選択したブレークポイントで実行が停止します。
コンポーネントを一度も読み込むことができない場合 (コンポーネントのスタートアップ コードでエラーが発生する場合など) は、デバッグ セッションを開始する前に、コンポーネント DLL を読み込む必要があります (下記の操作手順 11. ~ 14. を参照)。
Windows NT のセキュリティ特権の設定と IIS 4.0 DLL のデバッグ
場合によっては、上記の手順を使用できないことがあります。そのような場合は、第 3 の方法 (IIS の以前のバージョンでも使用されていた方法) を採用します。この方法では、Windows NT のセキュリティ特権を設定するほかに、レジストリを変更する必要があります。また、IIS をサービスとして実行できなくなります。上の 2 つの方法を使用できない場合に限り、この第 3 の方法を使用してください。
Windows NT のセキュリティ特権を設定して IIS 4.0 DLL をデバッグするには
- ドメイン ユーザー マネージャ管理ツール (USRMGR) を使用して、インターネット サーバー拡張 DLL のデバッグに使用する Windows NT アカウントに、ローカル コンピュータ上の特権である [サービスとしてログオン]、[オペレーティング システムの一部として機能]、および [セキュリティ監査の生成] を追加します。
- 分散 COM の構成ユーティリティ (DCOMCNFG) を使用して、IIS Admin サービスの ID をデバッグ用アカウントに合わせて変更します。
- レジストリ エディタ (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 の追加サブキー群で使用されている場合もあります。
- レジストリの CLSID ノードの下にあるすべての IISADMIN 関連サブキーに、LocalServer32 サブキーを追加します。つまり、前の操作手順で削除したすべてのサブキーに対応するサブキーを追加します。新しいキーの既定値として <path>\inetinfo.exe -e w3svc を設定します。通常、<path> は "c:\winnt\system32\inetsrv" です。
- Microsoft 管理コンソールまたはコントロール パネルの [サービス] ダイアログ ボックスで WWW サービスと FTP サービスを停止します。
- Visual Studio のソリューション エクスプローラで、プロジェクトを選択します。
- [表示] メニューの [プロパティ ページ] をクリックします。
- [プロパティ ページ] ダイアログ ボックスで、[構成プロパティ] フォルダの下の [デバッグ] ページを選択します。
- プロパティ グリッドの [コマンド] フィールドに、次のように入力します。
C:\WINNT\System32\Inetsrv\Inetinfo.exe - プロパティ グリッドの [コマンド引数] フィールドに、次のように入力します。
-e w3svc - [リンカ] フォルダを開きます。
- [出力ファイル] フィールドに、デバッグするインターネット サーバー拡張 DLL の名前とパスを入力します。
- [OK] をクリックします。
- デバッグを開始するには、[デバッグ] メニューの [開始] をクリックします。
メモ デバッグ セッションが終了したら、操作手順 5. から 1. (逆順) を行って以前の設定に戻し、IIS をサービスとして実行できるようにします。