ASP アプリケーションのデバッグ: Part 1
J.D. Meier
Microsoft Corporation
April 24, 2000
この記事は、もともと MSDN Online Voices のコラム "Servin' It Up" に掲載されたものです。
目次
パート 1
はじめに
ASP スクリプトのデバッグ
Microsoft Script Debugger を使用した ASP スクリプトのデバッグ
Visual InterDev デバッガを使用した ASP スクリプトのデバッグ
Global.asa ファイルのデバッグ
パート 2
Visual Basic デバッガを使用した Visual Basic コンポーネントのデバッグ
Visual InterDev からの Visual Basic コンポーネントのデバッグ
Visual C++ デバッガを使用した Visual Basic および Visual C++ コンポーネントのデバッグ
WinDBG を使用した Visual Basic および Visual C++ コンポーネントのデバッグ
まとめ
はじめに
この記事では、開発中の ASP に対するデバッガの使用について述べます。デバッガの使用は、コードに trace ステートメントをまき散らすよりも、変数とアプリケーションの流れを監視するための効率的な方法です。この記事では、ASP スクリプトと ASP によって呼び出されるコンポーネントの両方のデバッグについて説明します。
ASP スクリプトのデバッグ
ASP スクリプトは、Microsoft Script Debugger または Visual InterDev® を使用してデバッグすることができます。
Microsoft Script Debugger を使用した ASP スクリプトのデバッグ
Microsoft Script Debugger は、サーバー側とクライアント側の両方のスクリプトをステップ実行する機能を備えています。スクリプトの流れを表示して制御するだけでなく、変数とプロパティの値を表示して変更することができます。マシンに Visual InterDev がインストールされていない場合は、Microsoft Script Debugger を使用してください。
セットアップ:
Microsoft Script Debugger をインストールします。Microsoft Script Debugger は Microsoft Script Debugger Download Page からダウンロード できます。Microsoft Script Debugger は、\Program Files\Microsoft Script Debugger にインストールされます。インストール後、マシンを再起動する必要があります。
Web アプリケーションの ASP スクリプト デバッグを有効にします。Internet Information Services (IIS) 5 のインターネット サービス マネージャまたは IIS 4.0 の Internet Information Service Microsoft Management Console を使用して、ASP アプリケーションを右クリックし、[プロパティ] を選択します。次に、[構成] ボタンをクリックします ([作成] ボタンだけが使用可能になっている場合は、[作成] ボタンをクリックして、ディレクトリを ASP アプリケーションとして登録します。こうすると、[構成] ボタンをクリックできるようになります)。
[アプリケーションのデバッグ] タブで、[ASP のサーバー側のスクリプトのデバッグを有効にする] オプションがチェックされていることを確認します (図 1 を参照)。このオプションをチェックすると、ASP が 1 つのスレッドにロックされるので、デバッグが終了したら、忘れずにこのオプションのチェックマークを外してください (Knowledge Base 記事 Q216580 "PRB: Blocking/Serialization When Using InProc Component (DLL) from ASP" を参照してください)。
図 1. Web アプリケーションの ASP のサーバー側スクリプトのデバッグを有効にする。
デバッガの使用:
Microsoft Script Debugger を使用して ASP サーバーサイド スクリプトをデバッグするには、以下の方法があります。
- デバッガで ASP ページを実行する。
- 構文またはランタイム エラーに応答する (ジャストインタイム デバッグ)。
- スクリプト内のキーワードを通じてデバッガを呼び出す。
デバッガで ASP ページを実行するには、以下のステップを実行します。
Internet Explorer で ASP ページを表示します。
Internet Explorer の [表示] メニューから [スクリプト デバッガ] を選択し、[開く] を選択して、Microsoft Script Debugger を開きます。Microsoft Script Debugger が表示されます。
Microsoft Script Debugger の [表示] メニューから [実行中のドキュメント] を選択します。[実行中のドキュメント] ウィンドウが表示されます (図 2 を参照)。
図 2. Microsoft Script Debugger の [実行中のドキュメント] ウィンドウ
[実行中のドキュメント] ウィンドウの ASP ページをダブルクリックして開きます。ASP ページは、Web アプリケーションを参照する [Microsoft Active Server Pages] ノードの下に表示されているはずです。
ASP サーバー側スクリプトにブレークポイントを設定します。そのためには、F9 を押すか、[デバッグ] メニューを選択して、[ブレークポイントの設定/解除] を選択します。
Internet Explorer に戻り、F5 を押すか、[表示] メニューの [最新の情報に更新] を選択して、ASP ページを更新します。
Microsoft Script Debugger に切り替えて、アプリケーションをステップ実行します。[表示] メニューから [呼び出し履歴] と [コマンド ウィンドウ] を選択するか、適切なツールバー ボタンをクリックして、[呼び出し履歴] ペインと [コマンド ウィンドウ] ペインを開きます (図 3 を参照)。[呼び出し履歴] ペインにはスクリプト パスのトレールが表示され、[コマンド ウィンドウ] では変数の値を表示することができます。Visual Basic® Scripting Edition (VBScript) の変数の値を表示するには、プリント コマンド "?" を使用します ( MyVariable など)。JScript® では、変数名を入力します。
デバッガを使用してスクリプト エラーに応答することもできます。ASP ページでエラーが発生し、ASP アプリケーションのデバッグが有効になっていた場合は、サーバーは自動的に Microsoft Script Debugger を開いて、デバッガをトリガしたエラー メッセージを表示します。
スクリプト内のキーワードを通じてデバッガを起動するには、VBScript では Stop キーワードを、JavaScript では debugger キーワードを使用します。設計時に ASP ページにキーワードを追加して、ASP ページを表示します。ASP アプリケーションのデバッグが有効な場合は、デバッガが自動的に開いて、キーワードを挿入したコード行まで実行します。
追加情報:
Windows 95/98 では、スクリプト デバッガを使用してデバッグできるのはクライアント側のスクリプトだけなので、ASP のサーバー側スクリプトをデバッグすることはできません。
Visual InterDev デバッガを使用した ASP スクリプトのデバッグ
Visual InterDev を使用している場合は、Visual InterDev の組み込みデバッガを使用することができます。Visual InterDev デバッガは、ASP ページのサーバー側とクライアント側の両方のスクリプトをデバッグすることができます。また、リモート マシンから ASP サーバー側スクリプトをデバッグする機能も備えています (リモート デバッグ)。
セットアップ:
「Microsoft Visual Interdev 6.0 Debugging」 に、Visual InterDev のインストールとローカルおよびリモート デバッグの設定について詳しい説明があります。また、よくある問題とその解決方法も示されています。
ヒント: DCOMCNFG ([スタート]-[ファイル名を指定して実行] を選択して、DCOMCNFG と入力します) に Catalog Class が一覧表示されない場合は、おそらく Visual InterDev Server コンポーネントがインストールされていないので、デバッグはできません。Visual InterDev Server コンポーネントをインストールする必要があります (やはり 「Microsoft Visual Interdev 6.0 Debugging」 を参照してください)。
デバッガの使用:
Visual InterDev デバッガを使用して ASP サーバー側スクリプトをデバッグするには、以下の方法があります。
- Visual InterDev からページを実行する (自動デバッグ)。
- 実行中のプロセスに Visual InterDev デバッガをアタッチする (手動デバッグ)。
- 構文または実行時エラーに応答する (ジャストインタイム デバッグ)。
- スクリプト内のキーワードを通じてデバッガを起動する。
自動モードでデバッガを実行すると、Visual InterDev は以下のステップを自動的に実行します (デバッグを中止すると、Visual InterDev はこれらの設定を自動的に元の状態に戻します)。
- Web アプリケーションのデバッグ オプションを有効にします。
- Web アプリケーションを別メモリ領域で実行するようにマークします ("分離プロセス")。
- IIS 5 に COM+ アプリケーションを、または IIS 4.0 に MTS パッケージを作成し、その ID をデバッグ セッションを開始したユーザーに設定します。
- Internet Explorer を起動して、Internet Explorer のプロセスにアタッチします。
Visual InterDev の自動デバッグ機能を使用するには、以下のステップを実行します。
Visual InterDev の [プロジェクト エクスプローラ] で、デバッグする ASP ページを右クリックして、[スタート ページに設定] を選択します (図 4 を参照)。
図 4. スタート ページに設定する。
デバッガのブレークポイントを設定します。そのためには、ASP スクリプト内の行にカーソルを置いて F9 を押します。
標準ツールバーの [開始] ボタンを押すか、[デバッグ] メニューから [開始] を選択します。
初めてデバッガを起動した場合には、認証情報の入力を要求されます。Domain\Username とパスワードを入力します。
スクリプトをデバッグします。Visual InterDev デバッガはブレークポイントで停止します (図 5 を参照)。[表示] メニューの [ツールバー] から [デバッグ] を選択して、デバッグ ツールバーを使用できるようにしておきます。また、[呼び出し履歴]、[イミディエイト]、[ウォッチ] などのデバッグ ウィンドウを追加します。このためには、[表示] メニューの [デバッグ ウィンドウ] を選択して、該当するウィンドウを選択します。
自動デバッグは、デバッグのための Web アプリケーションのセットアップ プロセスを単純化しますが、手動で制御したいという場合もあります。また、80 以外のポートで実行している ASP アプリケーションをデバッグするときや、Windows 2000 クライアントから Windows NT 4.0 Web サーバーをリモート デバッグする場合など、自動デバッグが使えないので手動でデバッグしなければならない場合もあります。
デバッガを手動で使用するには、以下の記事にステップ バイ ステップの説明があるので参照してください。
- Q258929 "HOWTO: Debug ASP Applications Manually Against Windows 2000 Web Server"
- Q196378 "HOWTO: Debugging ASP Applications Manually Against Windows NT 4.0 Web Server"
Visual InterDev を使用して ASP を手動でデバッグする手順を説明した KB ビデオ もあります。
手動でデバッグするときには、Web アプリケーションのデバッグ プロパティを手動でセットアップすることになるので、デバッグが終了したら、忘れずに Web アプリケーションの設定を元に戻すことが重要です。[ASP のサーバー側のスクリプトのデバッグを有効にする] のチェックを外してください。さもないと、Web アプリケーションは 1 つの実行スレッドにロックされてしまいます。
追加情報:
Visual InterDev デバッガを使用するときに注意すべき問題がいくつかあります。
- Windows 95/98 では、ASP のサーバー側スクリプトをデバッグすることはできません (Q199004 "INFO: Visual InterDev6 ASP Debugging Not Supported in Windows 95/98" )。
- Windows NT 4.0 と Internet Explorer 5 の組み合わせでは、ASP ページ内のクライアント側スクリプトのブレークポイントはヒットしません (Q233035 "BUG: Client-side Breakpoints in ASP Pages Not Hit with IE 5 Installed" )。この問題は Windows 2000 では発生しません。
- サーバーのリモート デバッグを使用できるのは、一度に 1 人のユーザーだけです (Q202040 "PRB: Can't Attach to Application Microsoft Active Server Pages" )。
Visual InterDev からのデバッグに関する問題の詳細については、Q244272 "INFO: Visual InterDev 6.0 Debugging Resources" を参照してください。
Visual InterDev を使用したリモート マシンのデバッグの詳細については、「FAQ: Remote Machine Debugging」を参照してください。
Global.asa ファイルのデバッグ
Global.asa ファイルをデバッグするプロセスも、ほかのスクリプト ページのデバッグと同様です。Microsoft Script Debugger または Visual InterDev デバッガを使用することができます。Global.asa 内のイベントにブレークポイントを設定したり、Global.asa 内のイベントにデバッガを呼び出すコマンド (VBScript の Stop または JScript の debugger) を挿入することができます。
ただし、Visual InterDev で Global.asa ファイルをスタート ページに設定することはできません。Global.asa ファイルを実行させるには ASP ページを要求する必要があります。これは、ASP ページ内のインライン スクリプトと違って、Global.asa はイベントドリブンなプロシージャを含んでいるためです。したがって、対応するプロシージャをデバッグするためには、適切なイベントをトリガする必要があります。
Global.asa は以下のイベントに応答します。
- Application_OnStart は、Web アプリケーション内で初めて ASP ページが要求されたときに発生します。
- Application_OnEnd は、Web アプリケーションがシャットダウンされるときに発生します。
- Session_OnStart は、新しいユーザー セッションが確立されたときに発生します。
- Session_OnEnd は、ユーザー セッションがタイムアウトになるか、スクリプトが明示的に Session.Abandon メソッドを呼び出したときに発生します。
引き続きパート 2をご覧ください。
J.D. Meier は米国東海岸で生まれて育ちました。Horace Greeley の助言に従って、MTS および ASP 技術を含むサーバー側コンポーネントと Windows DNA アプリケーションを専門とするデベロッパ サポート エンジニアとして働いています。