ASP レクチャー シリーズ (セブンティーン) ASP スクリプトのデバッグ
著者:Eve Cole
更新時間:2009-05-30 19:58:42
計画や経験がどれほど洗練されていても、スクリプト エラー (バグ) によって、そもそも ASP サーバー側スクリプトが正しく実行されない可能性があります。つまり、デバッグ、つまりスクリプト エラーを見つけて修正することは、成功した堅牢な ASP プログラムを開発するために非常に重要です。
Microsoft スクリプト デバッグ ツール
Microsoft® Script Debugger は、エラーをすばやく見つけて、サーバー側スクリプトを対話的にテストするのに役立つ強力なデバッグ ツールです。スクリプト デバッガは、Windows Internet Explorer バージョン 3.0 以降で動作します。これを使用すると、次のことが可能になります。
サーバー側スクリプトを 1 行ずつ実行します。
コマンド ウィンドウを開いて、サーバー側スクリプトの実行中に変数、プロパティ、または配列要素の値を監視します。
サーバー側スクリプトを一時停止するには、特定の行に一時停止フラグを設定します (デバッグ ツールまたはスクリプト コマンドを使用)。
サーバー側スクリプトの実行中のプロセスを追跡します。
注 デバッグ ツールを使用してスクリプトを表示し、エラーを見つけることはできますが、スクリプトを直接編集することはできません。エラーを修正するには、エディタでスクリプトを編集し、保存してからスクリプトを実行する必要があります。
(この機能は Windows 95 以降では使用できません。)
デバッグの有効化 サーバー側スクリプトのデバッグを開始する前に、まず ASP デバッグをサポートするように Web サーバーを構成する必要があります。
Web サーバーのデバッグを有効にすると、次のいずれかの方法を使用してスクリプトをデバッグできます。
Microsoft Script Debugger を手動で開き、ASP サーバー側スクリプトをデバッグします。
Internet Explorer を使用して .asp ファイルを要求します。ファイルにエラーが含まれている場合、または人為的に追加された実行停止ステートメントが含まれている場合、Microsoft Script Debugger が自動的に起動し、スクリプトが表示され、エラーの原因が示されます。
スクリプト エラー サーバー側スクリプトをデバッグするときに、さまざまな種類のエラーが発生する可能性があります。これらのエラーの中には、スクリプトが正しく実行されず、プログラムの実行が停止したり、誤った結果が返されたりするものもあります。
構文エラー 構文エラーは、不適切なスクリプト構文が原因で頻繁に発生するエラーです。たとえば、コマンドのスペルが間違っていたり、関数に渡されたパラメータが間違っていたりすると、エラーが生成されます。構文エラーにより、スクリプトが実行できない可能性があります。
ランタイム エラー ランタイム エラーは、スクリプトの実行中に不可能なアクションを実行しようとするスクリプト命令によって発生します。たとえば、次のスクリプトにはゼロで除算する関数 (不正な数学演算) が含まれており、実行時エラーが生成されます。
<スクリプト言語 = "VBScript" runat = サーバー>
結果 = Findanswer(15)
document.write ("答えは " &Result)
関数 Findanswer(x)
'このステートメントは実行時エラーを生成します。
答えを見つける = x/0
終了関数
</script>
実行時エラーの原因となるエラーは、スクリプトの実行中に中断されないように修正する必要があります。
論理エラー 論理エラーは多くの場合潜在的であり、検出が困難です。入力ミスやプログラムのロジック フローが正しくないことによって発生するロジック エラーがある場合、スクリプトは正常に実行されても、誤った結果が生成される可能性があります。たとえば、値のリストを並べ替えるサーバー側スクリプトは、値の比較に「>」記号の代わりに「<」記号を使用すると、誤った並べ替え結果を返します。
エラーのデバッグ手法 エラーの原因を見つけてアプリケーションをテストするために、さまざまなデバッグ手法を使用できます。
ジャストインタイム (JIT) デバッグ 実行時エラーによって ASP スクリプトの実行が中断されると、Microsoft Script Debugger が自動的に起動し、.asp ファイルが表示され、ステートメント ポインタがエラーの原因となった行を指し、エラーメッセージが表示されます。このタイプのデバッグはジャストインタイム (JIT) デバッグと呼ばれ、コンピューターがプログラムの実行を一時停止します。編集プログラムを使用してこれらのエラーを修正し、修正内容を保存してから、スクリプトを再度実行する必要があります。
ブレークポイントのデバッグ エラーが発生し、エラーの原因を見つけることが難しい場合は、あらかじめ設定されたブレークポイントを使用したデバッグ方法を使用できます。ブレークポイントは、特定の行でスクリプトを一時停止します。スクリプトの問題のあるポイントに 1 つ以上の異なるブレークポイントを設定し、デバッガーを使用してスクリプトに設定されている変数またはプロパティの値を修正できます。これらのエラーを修正した後、ブレークポイントをクリアすると、スクリプトが中断されずに実行されるようになります。
Microsoft Script Debugger を使用してスクリプトを開いてブレークポイントを設定してください。次に、Web ブラウザでこのスクリプトをリクエストします。スクリプト内のブレークポイントを含む行が実行されると、コンピューターはスクリプト デバッガーを起動し、ステートメント ポインターはブレークポイントが設定されている行を指します。
VBScript Stop ステートメント デバッガー サーバー側スクリプトの問題のある部分の前に Stop ステートメントを挿入することで、VBScript で記述されたサーバー側スクリプトにブレークポイントを追加することもできます。たとえば、次の ASP スクリプトには、結果を表示する前に実行を一時停止する Stop ステートメントが含まれています。
<%
日の値 = 3
TheDay = WeekDayName(曜日値)
ここでブレークポイントを設定するのはやめてください。
Response.Write("今日は " + TheDay)
%>
Web ブラウザで使用されている前のスクリプトを要求すると、デバッガが起動して .asp ファイルが自動的に表示され、ステートメント ポインタが stop ステートメントの場所を示します。配布された .asp ファイルから Stop ステートメントを必ず削除してください。
JScript デバッガー ステートメントを使用したデバッグ Microsoft® JScript で記述されたサーバー側スクリプトにブレークポイントを追加するには、問題の行の前にデバッガー ステートメントを挿入します。たとえば、次のスクリプトには、実行を中断し、スクリプトが新しい値にループするたびに Microsoft Script Debugger を自動的に起動するデバッガ ステートメントが含まれています。
<%@ Language="JScript" %>
<%
for (var count = 1; count <= 10; count++) {
var イベントテスト = カウント%2;
debugger //ブレークポイントを設定します
if (イベントテスト == 0) {
response.write("偶数の値は " + count + "<br>")
}
}
%>
配布された .asp ファイルからデバッガー ステートメントを忘れずに削除してください。
注: デバッガ ステートメントと JScript ブレーク ステートメントを混同しないでください。プログラムの実行中、break ステートメントは現在のループを終了するだけであり、Microsoft Script Debugger のアクティブ化やプログラムの実行の一時停止は行いません。
スクリプトのデバッグ手法 スクリプト デバッガに加えて、優れたデバッグ手法のセットを使用すると、スクリプト エラーの原因の分析に費やす時間を大幅に削減できます。ほとんどのエラーは、コマンドのスペルミスや変数の欠落などの明白な原因によって引き起こされますが、一部の種類のロジックおよび実行エラーは、それほど明白ではない原因によって引き起こされることもあります。