--- title: Venkman でのブレークポイントの使用方法 slug: Using_Breakpoints_in_Venkman tags: - Tools - Venkman translation_of: Archive/Mozilla/Venkman/Using_breakpoints ---
この記事は Venkman 入門 から始まる一連の Venkman 記事の続きです。
いずれの言語であれ、「ブレークポイント」の設定はデバッグの基本作業として挙げられます。ブレークポイントとは、コード中で実行が停止されるところのことです。 Venkman のようなデバッグツールによってブレークポイントを設定すると、変数、オブジェクトあるいは他の実効状態を確認するために一時停止できるようになるのです。
この記事には JavaScript におけるブレークポイントの説明と Venkman でブレークポイントを設定および確認する方法が書かれています。
この和訳記事は Mozilla に訳者 dynamis が作成している日本語版 Venkman をインストールした環境を使って書かれており、文中の訳語や和訳と同時に撮り直したスクリーンショットなどはすべてそれに応じたものとなっております。従って、内容的な影響は一切ないものの、細部では原文と異なる所がありますのでご了承ください。
最新の日本語版 Venkman やその他 Venkman に関する日本語情報については Venkman-JP をご覧ください。
停止ボタンや debugger キーワードも JavaScript デバッガの便利な機能ですが、コードの奥深くまでデバッグするのであれば — 特に自身が記述しトラブルシューティングの責任もあるコードであれば — ブレークポイントが必要となります。
Venkman には 2 種類のブレークポイントがあります。まず 1 つ目の、最も一般的なものは、「実 (hard)」ブレークポイントというものです。実ブレークポイントはコンパイル済関数の擬似コードに含まれる、実際のトラップ命令のことを表しています。実ブレークポイントは現在ブラウザに「存続中」である関数の中にしか存在できません。実ブレークポイントはプログラムの実行を実際に停止させるもののことです。
2 つ目のブレークポイントである「予定 (future)」ブレークポイントというのは、可能な限り速やかに実ブレークポイントを設定するという Venkman による約束を表します。予定ブレークポイントは、まだコンパイルされていないスクリプト中で停止したい時に使用されます。予定ブレークポイントの最も一般的な用法は、「トップレベル」スクリプト (すべての関数の外側で実行されるスクリプト) あるいはページの onLoad イベント中で実行されるスクリプト中で停止するものです。予定ブレークポイントの URL にマッチするスクリプトが読み込まれ、指定行に実行可能なコードが含まれると、Venkman は自動的に実ブレークポイントを設定します。【訳注: 原文では予定ブレークポイントを設定すると書かれていますが、誤りでしょう】
この違いを除き、Venkman のブレークポイントは他の多くのデバッガでのブレークポイントと同様に機能します。ソースコードビューの左余白部に表示される負号はその行が実行可能なコードを含んでおり、実ブレークポイントを設定できるところであることを示しています。

ソースコードビューにあるこれらの負号をクリックするとその行にブレークポイントを設定できます。 Venkman は当該行が実行される前に停止します。ブレークポイントが設定されると、余白部は図 2 にあるように「B」という文字に変わります。このブレークポイントの設定後にこのコードを再度実行すると Venkman は 112 行目で停止します。

Venkman は 1 つ以上のブレークポイントが設定されていることを、設定されているファイルの横に赤い点を表示させることで、読み込まれているスクリプトビューでも示します。コードが停止される関数の開始行番号も横に表示されます。各非接続用法関係代名詞以降は追加説明的なものだから訳もそれらしくした

ブレークポイントを設定することは、実行環境に関する情報を Venkman (あるいは何であれご利用のデバッガ) が表示できるようにすることになります。スクリプトやソフトウェアプログラムをデバッグする上で最も重要なものとして、スクリプトの実行過程で変化する変数 — 関数は値、エラー、カウンタ、変数のスコープを返す — を確認できることが挙げられます。as 以降は理由だが単に説明として訳、aspect はデバッグの重要な側面→デバッグの仕方で重要なところ→デバッグに於いて大事なもの…と解釈
例えば図 1 の DownloadButton 関数では、ダウンロードボタンによってどの種のビルドが得られるようにするか判断するために変数 type を使用しています。プラットフォームは Windows であると関数が判断したときにその変数が調べられる行である、112 行目にブレークポイントを設定してみます。そしてメインブラウザでウェブページを再読込すると、DownloadButton 関数に入った時に実行が停止されることを確認できます。そこで停止し、type 変数の値が milestone であると「ローカル変数ビュー」に表示されるのです。一般の you や we ではないが冗長であるから主語 Venkman を省略(一般主語の受動態に)【訳注: Windows プラットフォームでナイトリービルドでないブラウザによって読み込んだときの挙動】

ブレークポイントと対話ビューを用いて、Venkman の表示する変数の値を(【訳注: コードを実際に変更することなく】 デバッグ環境自体のコンテクスト中でのみ) 変更し、これらの変更がコードの実行にどのように影響するか調べることができます。

このようにブレークポイントで停止時に Venkman で可能な操作について詳しくは Venkman 紹介記事の デバッグの基本 節をご覧ください。
ブレークポイントを削除するには、当該余白部を二度クリックします。1 度目のクリックでは実ブレークポイントが削除され、予定ブレークポイントだけが残されます。この状態は黄色の「F」という文字で表されます。2 度目のクリックにより予定ブレークポイントも削除されます。

Venkman ではブレークポイントとスクリプトを関連づけることができます。当該ブレークポイントに出会うと実行中の関数のスコープで実行されるスクリプトを指定できるのです。分かりにくいので若干独自表現にこの高度な機能や関連づけられるスクリプトに関する他のオプションは、ブレークポイントの右クリックからアクセスできる、ブレークポイントのプロパティダイアログで指定できます。

関連づけられたブレークポイントに出会った時に実行されるスクリプトを作成する場合には、Venkman が関連づけられたスクリプトの出力をどう扱うか決定する様々なオプションをブレークポイントのプロパティダイアログから選択できます。
true である必要はなく、null でも空文字列でもゼロでも未定義でも真偽値 false でもない任意の値)を返すと通常通り実行が続けられます。一方、ブレークポイントスクリプトが偽の値を返すと Venkman はその時点で実行を停止します。訳注:原文では予定ブレークポイントのプロパティについて書かれていましたが、実際のところ実ブレークポイントと予定ブレークポイント各々のプロパティを別のものとすることはできず、プロパティ設定の点では両者を区別できません。予定ブレークポイントに限った話だと誤解しないよう単に (実) ブレークポイントのプロパティについての記述にしました。
Venkman の「メタコメント」と呼ばれる機能を使うことで、デバッグしたいソースコード中に直接スクリプト付きブレークポイントを前もって埋め込んでおく事もできます。メタコメントというのは特別な形式のコメントのことで、後に続くコメント内のスクリプトを一定の方法で処理するようになっています。次のような種類のメタコメントを利用できます:
//@JSD_LOG コメントは、それに続くスクリプトを停止するくとなく実行するように設定されたブレークポイントを挿入します。評価の結果は対話セッションに記録されます。//@JSD_BREAK コメントは、それに続くスクリプトを実行して結果が真の場合は停止するように設定されたブレークポイントを挿入します。//@JSD_EVAL コメントは、それに続くスクリプトを停止も結果の記録もすることなく実行するように設定されたブレークポイントを挿入します。スクリプト中のメタコメントを有効にするには、読み込まれているスクリプトビューのファイルから「メタコメントをスキャン」コンテクストメニューを選択します。
メタコメントを追加すると、普通のブレークポイントが生成されます。このブレークポイントは手動で作成したブレークポイントとまったく同様に変更や削除できます。