ASP デバッグ環境の構築

ASPを仕事で使い始めたころ、真っ先に思ったのが
ASP のフリーの開発統合環境はあるのか?
EclipseプラグインVBScript支援はないのか?
といった疑問でした。
随分と長い時間をかけて調査しましたが
結果は「そんなもの存在しない」でした。
しかし、デバッグツールの存在に気がついた時は、
もっと早く出会いたかった
そんな風に思ったのを思い出します。

ASP デバッグ環境の構築
サーバ側(IIS)のVBScriptデバッグには Script Editor が利用できます。

  • Script Editorのインストール

Script Editor は MS Office の付属ツールです
つまり、MS Office をインストールしている場合は既にインストールされている可能性があります
試しにMS Excel を起動して、ツール>マクロ>Microsoft Script Editor
を選択してみましょう
インストールがされていない場合は、警告のダイアログが表示されるので
指示に従って追加インストールを行います(MS Office のCDが必要)
MS Office を持っていない方はMicrosoft Script Editor は利用できません

IISを起動
[ローカルコンピュータ]-[Webサイト]-[既定のWebサイト]のプロパティを開く
[ホームディレクトリ]タブを選択し[構成]ボタンを押下し[デバッグ]タブを選択
[デバッグのフラグ]の[ASPのサーバ側のスクリプトデバッグを有効にする]をチェック

  • IE環境設定

IEを起動して[ツール]-[インターネットオプション]-[詳細設定]の
[スクリプトデバッグを使用しない]のチェックを外す

  • ユーザーアカウントの設定

[ユーザーアカウント]の[詳細設定]タブを選択[詳細設定]を開く
[ローカル]-[グループ]の[Administrators]に[IWAM_マシン名]を追加する

  • DCOM構成設定

[管理ツール]-[コンポーネント サービス]-[DCOM構成]を開き
[Machine Debug Manager]のプロパティを開く
[セキュリティ]タブを選択
各アクセス許可は[カスタマイズ]を選択し、[編集]にて[Administrators]を追加してフルコントロールを付与

※「IUSR_<コンピュータ名>」は匿名アクセスのために使われるアカウント
 「IWAM_<コンピュータ名>」はIISの起動用のアカウント
 IISをインストールすると自動的に作成される

[Microsoft Script Editor]についても同様の設定を行う

  • LocalServer32 の変更

※XPのみ不具合が発生する場合必要
レジストリエディタを開きLocalServer32値のデータを
Officeインストールディレクトリ配下の[mse7.exe]に変更

  • Script Editorの設定

Microsoft Script Editorを起動(上記exeを実行)
[ツール]-[オプション]-[デバッグ]-[JITの設定]を開き
[アタッチを有効にする]/[JITデバッグを有効にする]をチェック

○サーバ側のVBScriptデバッグ
IEよりアプリケーションを開始
Microsoft Script Editorを起動
[デバッグ]-[プロセス]からワーカープロセスを選択して[アタッチ]ボタン押下
プロセス名:inetinfo.exe
タイトル:Microsoft Active Server Pages
※見当たらない場合システムプロセスを表示にチェック
[デバッグするプログラムの種類を選択]でScriptをチェックして[OK]ボタン押下
[デバッグ]-[ウィンドウ]-[実行中のドキュメント]を開き、
デバッグ対象のソースを開き、ブレークポイントを設定

IEよりデバッグ対象のページを呼び出すとブレークポイントでプログラムの実行
が停止する

○クライアント側のJavaScriptデバッグ

  • IEより起動する方法

IEよりアプリケーションを開始しデバッグ対象ページを開く
IEの[表示]-[スクリプト デバッガ]-[開く]を実行し可能なデバッガを選択して
[サーバ プロシージャ コールにステップ イン]でScriptを選択して[OK]ボタン押下
[実行中のドキュメント]にソースが表示されるのでブレークポイントを設定する

  • Script Editorよりアタッチする方法

IE のメニューが利用できない場合などはこちらの方法にて同様にデバッグが可能
[デバッグ]-[プロセス]のワーカープロセスの選択で以下のプロセスを指定
プロセス名:IEXPLORE.EXE
タイトル:デバッグ対象のページタイトル
以降はサーバー側と同様の手順を行う