【ハウツー】
JavaScriptのデバッグを行うときはJavaScript Debuggerを用いる。ページメニューをたどって表示させるか、キーボードのAltと@キーを同時に押す。
JavaScript DebuggerではCUIベースでデバッグを行う。FirebugやDragonflyのようなGUIでのデバッグに慣れているユーザや、GDBを使ったことがないユーザは多少とっつきにくいかもしれない。
helpと入力して表示されるコマンドは次のとおり。
また、ソースコード(debugger_shell.js)やテスタ用のドキュメントを見ると、次のコマンドが用意されていることがわかる。
これらコマンドの詳しい使い方は、「help」に続けて調べたいコマンドを入力すれば表示される。使い方がわからなくなったらとりあえずhelpで見てみよう。
JavaScriptのデバッグをする場合はおもに次のような手順で行う。
ここでは解説に使用するサンプルファイルに、「jQueryを使ってるならコレ! ウィジェットライブラリの決定版 - jQuery UI」で紹介した文字サイズを動的に変更するサンプルを改変したものを使用する。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<link href="./css/jquery-ui-themeroller.css" rel="stylesheet" type="text/css">
<title>jQuery UI 1.5.1 Demos / Slider with API/CSS</title>
<script type="text/javascript" src="./js/jquery-1.2.6.js"></script>
<script type="text/javascript" src="./js/jquery-ui-personalized-1.5.1.min.js"></script>
<script type="text/javascript" src="./slider.js"></script>
</head>
<body>
<div id="slider_ui">
min(50)← value: <span id="slider_value"> </span> →max(300)
<div id="slider"></div>
</div>
<h1>Slider</h1>
<p>Slider - A sliding input element</p>
</body>
</html>
$(document).ready(function()
{
var slider = $('#slider');
var slider_ui = $('#slider_ui');
var slider_value = $('#slider_value');
slider.css( 'width', '300px' ) ;
slider_ui.css( 'font-size', '12pt' ) ;
$('body').css( 'font-size', '100.01%' ) ;
slider_value.text( '100' );
// slide
slider.slider(
{
min: 50,
max: 300,
startValue: 100,
slide: function set(event, ui)
{
$('body').css( 'font-size', ui.value + '%' );
slider_value.text( ui.value );
}
});
}
);
HTMLにJavaScriptを直書きした場合、HTMLファイル名を指定してブレークポイントを設定することができなかったので、ここではHTMLとJavaScriptとでファイルを分離した。上記ファイルをGoogle Chromeで開く。
ブレークポイントを設定する。ブレークポイントは関数名や「ファイル名 + 行数」で指定することが可能だ。
JavaScript Debugger
attached to jQuery UI 1.5.1 Demos / Slider with API/CSS
$ scripts
[unnamed] (source:"")
[unnamed] (source:"")
file:///C:/test/js/jquery-1.2.6.js (lines 3549)
file:///C:/test/js/jquery-ui-personalized-1.5.1.min.js (lines 1)
file:///C:/test/slider.js (lines 26)
[unnamed] (source:"void(0)")
$ break slider.js:21
set breakpoint #1
上の場合、3行目のscriptsでロードされているスクリプトを確認し、10行目の「break slider.js:21」でslider.jsの21行目「($('body').css( 'font-size', ui.value + '%' ) ;)」にブレークポイントを設定している。
ブレークポイントを設定したあとにスライドを動かすと、さきほど指定した行でブレークする。
paused at breakpoint 1: #<an HTMLDivElement>.set(event=#<an Object>, ui=#<an Object>), file:///C:/test/slider.js
21: $('body').css( 'font-size', ui.value + '%' ) ;
$ args
event = #<an Object>
ui = #<an Object>
$ print ui.value
101
$ continue
paused at breakpoint 1: #<an HTMLDivElement>.set(event=#<an Object>, ui=#<an Object>), file:///C:/test/slider.js
21: $('body').css( 'font-size', ui.value + '%' ) ;
$ print ui.value
102
$ continue
上は、スライダを右方向に動かした後、デバッグをしている様子。6、11行目のprintでui.valueを確認し、8行目のcontinueで処理を続行している。
GDBを使ったことがないユーザは、多少の慣れが必要そうだ。なお一部のコマンドにはエイリアスが設定されている。エイリアスを覚えておけば、すばやく目的の操作ができるようになるだろう。以下は、debugger_shell.jsの197-211行目を基にまとめたものだ。
Webインスペクタ・リソースのタイムラインで解析できる内容・デバッガの使い勝手はFirebugやDragonflyにかなり近いところまで実装されており、他のWebブラウザのWebインスペクタに慣れてきたユーザも問題なく使えるだろう。
しかし、JavaScriptのデバッグについてはGUIが用意されており、クリックひとつでブレークポイントの設定や各種のトレースが行えるFirebug/Dragonflyと比べると、まだ使い勝手がいいとは言いがたい。Google Chromeはまだベータ版、今後の発展に期待したいところだ。
| Google独自ブランドのWebブラウザ「Google Chrome」が登場へ [2008/9/2] |
| FirefoxがGoogle Chromeを気にしなくていい10の理由 [2008/9/8] |
| 人気のデバッグツールが待望の新版リリース! 「Firebug1.2」を使いこなそう [2008/9/4] |
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
「ガンスリ」10周年で大王付録にヘンリエッタフィギュア [22:22 5/26] ホビー |
|
【特集】クライマックス突入記念! 『Fate/Zero』の舞台裏に迫る!! [22:00 5/26] ホビー |
|
竹宮ゆゆこ×カスカベアキラ「エバーグリーン」1巻刊行 [21:59 5/26] ホビー |
|
最もセクシーな男性「メン・オン・ファイア」21人をAARP誌が発表 [21:30 5/26] エンタメ |
|
【インタビュー】栗山千明 - ファンタジーという世界観だからできること [21:30 5/26] エンタメ |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。