japan.internet.com The Internet & IT Network


RSSニュース検索
カテゴリ
> トップページ
> Webビジネス
> Eコマース
> Webファイナンス
> Webマーケティング
> パブリック
> Webテクノロジー
> 携帯・ワイヤレス
> Linux Today
> Linux Tutorial
> J.I.C.ブログ
キャリア
> 転職ならen
> 派遣ならen
> アルバイトならen
> IT求人情報
ヘッドライン
> 今日のヘッドライン
> 週間ヘッドライン
Special Link
> フォトコミュニティ
> ストックフォト
> クリップアート
> イラスト
> フェリカ
> Web2.0
> 写真
イベント&セミナー
> イベントカレンダー
> 書評「IT の耳」
> 出張・接待検索
> ニュースガジェット 注目
無料ニュースメール
> 新規登録
> 変更・解除
> オプトインメールの登録・変更・解除
インフォメーション
> パートナーサイト
転職ならエン
就職ならen
求人ならen
履歴書ならen
アルバイトならエン
CRM/SFAならオラクル
> グループ会社
株式会社アエリア
(株)サンゼロミニッツ
株式会社エアネット
> お問い合わせ
> 広告掲載について
> リンクについて
> 著作権について
> その他お問い合わせ
> 利用規約
> 個人情報保護方針
> 会社概要地図
デベロッパー 2008年2月19日 10:00
デベロッパー・バックナンバー
Internet ExplorerでのASP.NET AJAXのデバッグ

著者: Dan Whalin  オリジナル版を読む プリンター用 記事を転送
2008年2月19日 10:00 付の記事
海外internet.com発の記事
このエントリーを含むはてなブックマーク この記事をクリップ! Buzzurlにブックマーク Yahoo!ブックマークに登録 newsing it!

はじめに

 ASP.NET AJAX開発者がアプリケーションを効率よくデバッグしテストするために利用できるツールは数多くあります。たとえば、ASP.NET AJAXスクリプトライブラリには、アサーションを行ったりトレース操作を実行したりするのに使用できるデバッグ機能が用意されています。リクエストメッセージとレスポンスメッセージをインターセプトして表示し、データの問題の究明やAJAXのリクエストメッセージとレスポンスメッセージのサイズの監視を簡単に行うことのできるツールもいくつかあります。本稿では、Internet ExplorerとVisual Studioを使ってJavaScriptをデバッグする方法をいくつか紹介します。ここで紹介するものの他に、ASP.NET AJAXアプリケーションのデバッグプロセスの簡素化に役立つ、Firefoxで利用できるデバッグテクニックもあります。

 JavaScriptのデバッグはなかなか難しい作業だという認識は以前からありましたが、これまで多くの開発者はアプリケーションの動作確認を主にアラート方式のデバッグで行っていました。幸いなことに、バージョン6以降のInternet Explorerには統合デバッグ機能が含まれており、これを使用すると、Visual Studio .NET 2005やMicrosoft Script Debuggerなどのデバッグツールでデバッグセッションを開始して、ASP.NET AJAXコードを1ステップずつ実行することができます(これについては以降のセクションで説明します)。Internet Explorerのデバッグ機能の活用方法を知れば、生産性を高め、バグやその他の問題を突き止めるための時間を大いに減らすことができます。

 バージョン6以降のInternet Explorerのデバッグ機能は既定では無効になっていますが、[ツール]→[インターネットオプション]→[詳細設定]で有効にすることができます。そのためには、[詳細設定]タブで次の2つの項目をオフにする必要があります(オンになっているとデバッグができません)。

  • スクリプトのデバッグを使用しない(Internet Explorer)
  • スクリプトのデバッグを使用しない(その他)

 さらに、これらの項目の付近にある[スクリプトエラーごとに通知を表示する]チェックボックスをオンにします。こうすると、ページ内でエラーが発生したときに通知を受けるようになります。このボックスをオンにしなければ、ブラウザの左下隅にアイコンが表示されますが、これをクリックしない限り、クライアントサイドのエラーが発生しても気づかない可能性があります。このチェックボックスをオンにすると、ブラウズする他の多くのWebサイトでエラーを見せられるという副作用があります。したがって、自分自身のアプリケーションをデバッグするとき以外はオフにしておくほうがよいかもしれません。

 デバッグを有効にするためのInternet Explorerの[詳細設定]タブの設定を図1に示します。

図1
図1

 Internet Explorerでデバッグを有効にすると、いろいろなテクニックを使ってASP.NET AJAXページをデバッグできるようになります。以降のセクションでは、これらのオプションについて説明していきます。

Internet ExplorerとVisual Studio .NET 2005によるデバッグ

 デバッグセッションを開始する方法は何とおりもあります。最も簡単な方法の1つは、Internet Explorerの組み込みスクリプトデバッグ機能を使用することです。ASP.NET AJAXページのデバッグセッションを開始するには、デバッグしたいページに移動し、Internet Explorerのメニューから[表示]→[スクリプトデバッガ]を選択します(図2を参照)。この方法を使用する場合は、前のセクションの説明に従って、Internet Explorerでデバッグを有効にしておく必要があります。

図2
図2

 図2からわかるように、[開く]と[次のステートメントで中断]という2つのオプションがあります。[開く]を選択した場合は、デバッガとしてVisual Studio .NETの使用を開始するか確認を求められます(図3を参照)。Visual Studio .NETをすでに開いている場合は、デバッグを開始することもできますし、デバッグ用にVisual Studio .NETの新しいインスタンスを開始することもできます。[次のステートメントで中断]を選択した場合は、そのページ内のスクリプト(またはそのページで参照されてるスクリプト)を実行するアクションが行われるまで何も起こりません。Internet Explorerでスクリプトコードが実行されると、Visual Studio .NET Just-In-Timeデバッガを使用するか確認を求められます。

図3
図3

 Visual Studio .NETを開いてデバッグできる状態になっても、ページ内にスクリプトが埋め込まれていると、ブレークポイントを設定することはできません。ブレークポイントを設定しようとすると、Visual Studio .NETのステータスバーの下部に「This is not a valid location for a breakpoint」というメッセージが表示されます。この問題を解決する方法は何通りかあります。まず、デバッグセッションを開始したいコードにJavaScript "debugger" ステートメントを直接追加するという方法が使えます。これは実行時にコード内のその場所でブレークポイントを強制的に発生させるものです。ただし、この目的のためにASP.NET AJAXのSys.Debugクラスがあるので、こちらのほうがAJAXアプリケーションのデバッグに適した選択肢といえます。Sys.Debugクラスのfail関数を呼び出すことにより、コードの特定の行に達したときにデバッガをトリガすることができます。

 Sys.Debug.fail関数のパラメータは1つだけで、このパラメータは障害の理由を表します。リスト1は、Sys.Debug.fail関数を使用して、Albumオブジェクトに歌が追加される直前にデバッグセッションに割り込む例を示しています。

リスト1
var album = new Wrox.ASPAJAX.Samples.Album();
album.set_title("Sam's Town");
album.set_artist("The Killers");

//Force the debugger to appear
Sys.Debug.fail("Debug song additions");

album.addSong(new Wrox.ASPAJAX.Samples.Song(3,"When you were young"));
album.addSong(new Wrox.ASPAJAX.Samples.Song(7,"Uncle Johnny"));
$get("lblTitle").innerHTML = album.get_title();
$get("lblArtist").innerHTML = album.get_artist();

 JavaScriptのコード行の実行時にSys.Debug.failを呼び出してデバッグセッションをトリガするというのは便利な機能ですが、アプリケーションを実働環境に移す前にこれらの呼び出しを削除するのを忘れてはなりません。そうしないと、Internet Explorerでデバッグが有効になっている場合には常にデバッガがトリガされてしまいます。スクリプトのバージョンを2種類用意し(Microsoftではデバッグスクリプトとリリーススクリプトでこれを行っています)、ScriptManagerで適切なScriptModeを設定して、実行時にロードするスクリプトを決定するとよいでしょう(『Professional ASP.NET 2.0 AJAX』(Wrox, 2007, ISBN: 978-0-470-10962-5)の第9章「Testing and Debugging ASP.NET AJAX Applications」を参照)。こうするとコードを重複して持つことになりますが、リリーススクリプトでは空白文字をすべて除去してサイズを最小化し、デバッグスクリプトではデバッグ、トレース、アサーションなどの操作のために必要なSys.Debugクラスの呼び出しを含んだ読みやすいスクリプトを維持する、といった使い分けができます。

 ページ内にスクリプトが埋め込まれている場合にデバッガをトリガするもう1つのオプションは、ページ内のJavaScriptコード全体を(.aspxページに直接含めるのではなく)専用のスクリプトファイルに移すというものです。この場合は、.jsという拡張子を持つスクリプトファイルをページから参照します(スクリプトファイルはHTMLマークアップと一緒にブラウザに送られるのではなく、実行時に別にロードされます)。こうしておけば、その外部スクリプトファイルにブレークポイントを設定することができます。たとえば図4の「Listing9-12.js」ファイルのJavaScriptコードでは、ブレークポイントが設定されています(このファイルは『Professional ASP.NET AJAX』(Wrox, 2007, ISBN: 978-0-470-10962-5)のダウンロードページから入手できます)。

図4
図4

 F11キー(ステップイン)またはF10キー(ステップオーバー)を押してコードを1ステップずつ実行していくと、ASP.NET AJAXで必要な動的ロードスクリプトファイルの場所を選択するように求められることもあれば、「There is no source code available for the current location」というエラーに遭遇することもあります。これが起こるのは、「ScriptResource.axd」および「WebResource.axd」HTTPハンドラを使ってロードされた動的生成スクリプトコードにステップインしようとしたときです。この場合、Visual Studioがトレースできる分離された物理ファイルはありません。この問題は、初めはイライラするかもしれませんが、すでにVisual Studio .NETの一部になっている単純なツールで軽減することができます。

 (Visual Studio .NET 2005 SP1はこの問題の解決に役立ちますが、やはりエラーの対処法を知ることが大切です。)

Visual Studio .NET 2005でのデバッグ手順

 Visual Studio .NET 2005には、スクリプトエクスプローラという非常に便利なツールが組み込まれていて、ページ内のスクリプト間での移動に使用できます。スクリプトエクスプローラを使用すると、エディタにスクリプトを動的にロードできるので、デバッガを使って簡単にステップインでき、「There is no source code available for the current location」エラーを避けることができます。スクリプトファイルをロードするか確認を求められたら、そのままキャンセルしてください(あるいは上述のエラーを受け取ったら[OK]をクリックします)。スクリプトエクスプローラウィンドウを表示するには、[デバッグ]→[ウィンドウ]→[スクリプト・エクスプローラ]を選択します(またはCtrl+Alt+Nキーを押します)。現在デバッグ対象になっているページをダブルクリックして、そのページをエディタで開き、表示されている他のスクリプトファイルをすべてダブルクリックします。このようにすると、そのページで参照しているすべてのファイルがVisual Studio .NETで開かれ、デバッガが適切なソースコードにアクセスできるようになり、さまざまな機能を利用したデバッグが可能になります。

 図5は、「Listing9-12.aspx」というASP.NET AJAX対応のページで使用されているスクリプトファイルとスクリプトエクスプローラの例です(このファイルは『Professional ASP.NET AJAX』(Wrox, 2007, ISBN: 978-0-470-10962-5)のダウンロードページから入手できます)。

図5
図5

 デバッグセッションでコードを1ステップずつ実行していくときにJavaScript変数にマウスポインタを合わせても、VB.NETやC#のコードをデバッグしているときと違って、情報やデータが表示されないことに気づくでしょう。多くの場合、[自動変数]、[ローカル]、[ウォッチ]、[イミディエイト]といったウィンドウを使用すれば変数データにアクセスできますが、変数をカーソルで強調表示してから、強調されたテキストの辺りにカーソルを持っていくことで、その変数に含まれているデータを表示できることもあります。この方法はどんな状況でも使用できるわけではありませんが、覚えておくと役に立つでしょう。

 ASP.NETページ内のVB.NETまたはC#のコードをデバッグするときと同じように、Visual Studio .NET 2005内でデバッグセッションを直接開始することもできます。まず、ソリューションエクスプローラでデバッグしたいページを右クリックし、メニューから[スタートページに設定]を選択します。それから、F5キーを押すか、デバッグツールバーの緑の実行ボタン(緑の矢印が付いているボタン)をクリックすると、Internet Explorerが起動して、そのページが表示されます。分離されたスクリプトファイルにブレークポイントを設定したら、ブラウザでデバッグしたいアクションを実行することによって、ブレークポイントをトリガします。

 コードを1ステップずつ実行していくときは、[自動変数]、[ローカル]、[ウォッチ]、[イミディエイト]といった標準のデバッグウィンドウに完全にアクセスできます(図6を参照)。これらのウィンドウを使用すると、変数データにすばやくアクセスして、アプリケーションの内部で何が起きているかを詳しく調べることができます。

図6
図6

 このセクションではVisual Studio .NET 2005のデバッグ機能に焦点を当てましたが、Visual Web Developer 2005 Expressにも、ASP.NET AJAXアプリケーションのデバッグに使用できる統合デバッグ機能があります。Visual Studio .NET 2005のデバッガほど充実した機能はありませんが、スクリプトエクスプローラ、ローカル、ウォッチといったウィンドウのサポートも備えています。

Internet ExplorerとMicrosoft Script Debuggerによるデバッグ

 ASP.NET AJAXページと関連スクリプトをデバッグしたいが、Visual Studio .NET 2005は使用できないという場合は、Microsoft Script Debuggerでスクリプトを表示し、1行ずつ実行しながらデバッグを行うことができます。Script Debuggeは、Windows NT 4、Windows 2000、Windows Server 2003、Windows XP、Windows VistaといったMicrosoftオペレーティングシステムで実行できるスタンドアロン製品として長らく利用されてきました。Script Debuggeはこちらからダウンロードできます(このURLは変更される可能性があります)。

 Script Debuggerをインストールしておくと、Internet Explorerのメニューから[表示]→[スクリプトデバッガ]→[開く](または[次のステートメントで中断])を選択したときに自動的にトリガされます。Script DebuggerはVisual Studio .NET 2005に組み込まれているデバッガほど強力ではありませんが、非常に便利であり、ASP.NET AJAXアプリケーションの問題を突き止めるのに役立ちます。

図7
図7

 ページ内で使われているスクリプトを[実行中のドキュメント]ウィンドウですべて確認することができます。また、ブレークポイントの設定/削除もできます。それには、ブレークポイントを設定(または削除)したい行にカーソルを置き、ツールバーから該当するアイコンを選択します。手のアイコンではブレークポイントが設定され、赤い「X」付きの手のアイコンではブレークポイントが削除されます。スクリプトは「ScriptResource.axd」と「WebResource.axd」を通じてページに動的にロードされ、特別なことをしなくても直接アクセスしてステップインすることができます。

 Script Debuggerが起動したら、F8キーを押してコードを1ステップずつ実行したり、Shift+F8キーを押してコードをステップオーバーしたり、Ctrl+Shift+F8キーを押してコードからステップアウトしたりすることができます。あるいは、ツールバーから該当するアイコンを選択して、コードを1ステップずつ実行することもできます。コードを1ステップずつ実行しながら、コマンドウィンドウを使って変数とその値を見ることができます。呼び出したい変数名またはオブジェクト関数を入力すると、それが表示されます。

 図8はScript Debuggerで使用できるウィンドウの例です。

図8
図8

 Visual Studio .NET 2005とMicrosoft Script Debuggerを同じマシン上で実行することはできますが、Script Debuggerをアンインストールすると、Internet ExplorerにScript Debuggerのメニュー項目が表示されなくなったり、Visual Studio .NETでSys.Debug.failの呼び出しが処理されなくなることがあります。Visual Studio .NETのインストールに対して修復を行えば、この問題を解消できます。

 本稿はMatt GibbsとDan Wahlinによる『Professional ASP.NET 2.0 AJAX』(Wrox, 2006, ISBN: 0-4701-0962-9)の第9章「Testing and Debugging ASP.NET AJAX Applications」を改作したものです。
 Copyright 2007 by WROX. All rights reserved. Reproduced here by permission of the publisher.

著者紹介

Dan Whalin(Dan Whalin)


関連記事
  • Microsoft、『WGA』認証不要版『IE7』の企業向け提供を開始
  • AJAXアプリケーションで標準的なブラウザナビゲーションを再現する
  • 自分のサーバーでメッセンジャーを運用できる「ajax im」
  • 『Gmail』と『IE』に新たな脆弱性、Cenzic が指摘
  • Opera が Microsoft を独占禁止法違反で提訴


  • 関連テーマ
  • Windows Vista
  • Microsoft
  • ブラウザ


  • ★最新トップニュース
    国内 日本 HP と TIS が OSS BPM で協業、低価格で高品質な BPM システムを(Webファイナンス 8月7日 18:00)
    従来の BPM 商用製品は非常に高価で、システム構築に数億円規模の投資が必要だったが、Red Hat の JBoss jBPM をベースとした TIS の BPMソリューションと、HP ProLiant を組み合わせることで、大幅にコストを削減できる。
    国内 サイバー・バズ、動画シーディングサービス「Bzzool」を9月上旬から開始(Webマーケティング 8月7日 17:50)
    株式会社サイバーエージェントの連結子会社である、株式会社サイバー・バズは2008年8月7日、PC・モバイルの両メディアに対応したバイラル動画シーディングサービス「Bzzool(バズール)」を9月上旬に開始する、と発表した。
    国内 今後欲しいケータイ充電器は「ソーラー式」がトップ――ネットエイジア調べ画像のある記事(Webマーケティング 8月7日 17:50)
    ネットエイジア株式会社は、15歳〜39歳のケータイユーザーに対し「外出時のケータイ充電」に関しての実態調査をモバイルリサーチにて実施、2008年8月7日、調査結果を発表した。
    国内 TCA、7月度の携帯契約数を発表――ソフトバンクが15か月連続純増 No.1 に(携帯・ワイヤレス 8月7日 17:50)
    電気通信事業者協会(TCA)は、2008年8月7日、7月末現在の「携帯電話/IP 接続サービス/PHS/無線呼び出し契約数」を発表した。
    国内 Infoseek 検索キーワードランキング (2008/7/29〜2008/8/4)(Webマーケティング 8月7日 17:40)
    今週の時事は、元プロボクサーで俳優の「大和武士」が、殺人未遂の現行犯で逮捕され不名誉な今週の首位獲得。
    トピックス
    > オススメのIT系求人情報【毎週月曜日更新】
    footer_301.gif


    リサーチ
    > デイリーリサーチDLサイト
    > OnlineResearchPortal (リサーチデータバンク)
    > モバイルリサーチ with goo
    footer_301.gif
    キーワード
    > iPhone > Youtube
    > Google > モバイルノート
    > 半導体 > ウィルコム
    > テーマ一覧はこちら
    footer_301.gif
    セミナー情報
    > 第1回インターネットコムマーケティングセミナー「新規クライアントを効率的に獲得する Web マーケティング手法とは」(3月26日)多数のご参加ありがとうございました
    footer_301.gif
    デベロッパー
    > DevX
    > CodeGuru
    > developer.com
    footer_301.gif
    j.i.c.ブログ
    ブログ一覧
    データメーション 【データメーション】
    以前はサイバースパイ活動に賛成だったのが今度は反対へ(8月6日)
    ベンチャー専門家の目利きブログ「なぜこの企業は伸びるのか?」 【ベンチャー専門家の目利きブログ「なぜこの企業は伸びるのか?」】
    「日本発のWEBサービスを世界中に広めたい!!」/ウノウ株式会社(8月6日)
    Graphic Design Forum 【Graphic Design Forum】
    携帯電話をどうにかしてくれ (8月1日)
    デスマーチからの脱却 【デスマーチからの脱却】
    独自ドメインでiPhoneのメール送受信(7月25日)
    エンジニアの独り言 【エンジニアの独り言】
    新入社員が配属される季節ですね。(7月23日)
    ジュピターメディア創設者がITを斬る 【ジュピターメディア創設者がITを斬る】
    Alan を探せ(7月18日)
    footer_301.gif
    最新コラム一覧
    週刊-サイト別アクセス状況データ 週刊-サイト別アクセス状況データ

    ビデオリサーチインタラクティブ調査(月間インターネットオーディエンスデータ)(8月7日)
    「IT の耳」 「IT の耳」

    【書評】『心に響くウェブ動画マーケティング。』(8月7日)
    検索エンジンマーケティング 検索エンジンマーケティング

    企業の不祥事がおきても動じない SEM のコツ(8月7日)
    百式のネットビジネス研究 百式のネットビジネス研究

    SuperMemo 理論を応用した、最強の記憶ツール「spicyelephant」(8月7日)
    Eメールマーケティング事情 Eメールマーケティング事情

    貴社メルマガは読者のアドレスリストに登録されているだろうか?(8月6日)
    SNSをビジネスに活用しよう SNSをビジネスに活用しよう

    ソーシャルブックマークの可能性を考えよう(8月5日)
    DevX DevX

    Windowsフォームアプリケーションにドラッグ&ドロップ機能を実装する(8月5日)
    日本と韓国のインターネットビジネス最新動向調査 日本と韓国のインターネットビジネス最新動向調査

    日本と韓国のEコマースサイト比較2―価格比較サイト(8月5日)
    エンジニア転職ノウハウ開発室 エンジニア転職ノウハウ開発室

    2008年夏ボーナス額平均70.2万円!金融・鉄鋼が好調(8月5日)
    アイレップの SEM フロンティア アイレップの SEM フロンティア

    間違いだらけの検索キーワード選び(8月5日)
    footer_301.gif
    専門チャンネル
    > セキュリティチャネル > テレコムチャネル
    > サーチエンジンウォッチ
    footer_301.gif
    海外のインターネットコム アメリカ韓国ドイツトルコ
    関連企業のサイト:ストックフォト イラスト ネットストリート ホテル予約サイト タウン情報 出張 事業継承 シミュレーション トランクルーム 優待映画チケット 田舎暮らしガイド オリジナルデザインTシャツ ニタコエ
    Copyright 2008 Jupitermedia Corporation All Rights Reserved. http://www.internet.com/
    space.gif space.gif