ブレークポイントの設定は、アプリケーションのデバッグにおいて重要な作業です。Flex アプリケーションの ActionScript コードであれば、どれにでもブレークポイントを設定できます。ブレークポイントは、外部 ActionScript ファイルのステートメント、<mx:Script> タグ内の ActionScript ステートメント、またはイベントハンドラプロパティを持つ MXML タグに設定できます。次の MXML コードの場合、click はイベントハンドラプロパティです。
<mx:Button click="ws.getWeather.send();"/>
ブレークポイントはセッション間で維持されます。ただし、ターゲットファイルを変更した場合や、fdb を終了した場合には、ブレークポイントが失われます。
次の表では、ActionScript デバッガでブレークポイントを操作するためのコマンドについて説明します。
|
コマンド |
説明 |
|---|---|
| break [args] |
指定された行または関数にブレークポイントを設定します。引数には行番号または関数名を指定します。引数を指定せずに break コマンドを使用すると、現在表示されている行ではなく、現在停止している行にブレークポイントが設定されます。 行番号を指定すると、fdb は指定された行のコードの先頭で停止します。関数名を指定すると、fdb はその関数のコードの先頭で停止します。 |
| clear [args] |
指定された行または関数のブレークポイントをクリアします。引数には行番号または関数名を指定します。 行番号を指定すると、fdb はその行のブレークポイントをクリアします。関数名を指定すると、fdb はその関数の先頭のブレークポイントをクリアします。 パラメータを指定しなかった場合、fdb は選択されたフレームが実行されている行のブレークポイントをクリアします。 ブレークポイントを番号でクリアする場合については、delete コマンドを参照してください。 |
| commands [breakpoint] |
指定されたブレークポイントが見つかった場合に実行するコマンドを設定します。ブレークポイントを指定しなかった場合、コマンドは最後のブレークポイントに適用されます。 |
| condition bnum [expression] |
特定のブレークポイントで停止するための条件を指定します。デバッグ中に bnum ブレークポイントに達すると、expression が評価されます。値が true または 0 以外である場合、fdb はブレークポイントで停止します。それ以外の値の場合、fdb はブレークポイントを無視して実行を続行します。 ブレークポイントから条件を削除する場合は、expression を指定しません。 条件ブレークポイントを使用すると、特定のタイプのすべてのイベントで停止できます。例えば、initialize イベントごとに停止するには、次のコマンドを使用します。 (fdb) break UIEvent:dispatch Breakpoint 18 at 0x16cb3: file UIEventDispatcher.as, line 190 (fdb) condition 18 (eventObj.type == 'initialize') |
| delete [args] |
ブレークポイントを削除します。削除するブレークポイントの番号をカンマまたはスペースで区切って指定します。すべてのブレークポイントを削除するには、引数を指定しないでください。 |
| disable breakpoints [bp_num] |
ブレークポイントを無効にします。特定のブレークポイントのみを無効にするには、オプションとしてスペース区切りで番号を指定します。 |
| enable breakpoints [bp_num] |
以前に無効にしたブレークポイントを有効にします。特定のブレークポイントだけを有効にするには、オプションとしてスペース区切りで番号を指定します。 |
次の例では、ユーザーがボタンをクリックするとトリガされる myFunc() メソッドにブレークポイントを設定しています。
(fdb) break myFunc Breakpoint 1 at 0x401ef: file file1.mxml, line 5 (fdb) continue Breakpoint 1, myFunc() at file1.mxml:5 5ta1.text = "Clicked"; (fdb)
すべてのブレークポイントとその番号を確認するには、info breakpoints コマンドを使用します。ブレークポイントが未解決であるかについても、確認できます。
commands コマンドを使用すると、fdb が特定のブレークポイントに到達するたびに、定期的にオブジェクトおよび変数の値を出力できます。次の例では、ta1.text の値($1 と呼ばれる)を出力し、where コマンドを実行します。ボタンのクリックハンドラのブレークポイントに到達するたびに、この処理を継続的に行います。
(fdb) commands 1 Type commands for when breakpoint 1 is hit, one per line. End with a line saying just 'end'. >print ta1.text >where >continue >end (fdb) cont Breakpoint 1, myFunc() at file1.mxml:5 5ta1.text = "Clicked"; $1 = "" #0 [MovieClip 1].myFunc(event=undefined) at file1.mxml:5 #1 [MovieClip 1].handler(event=[Object 18127]) at file1.mxml:15
ブレークポイントは、個々の SWF ファイルに固有のものではありません。複数の SWF ファイルで共有されるファイルにブレークポイントを設定すると、fdb によってそのブレークポイントがすべての SWF ファイルに適用されます。
例えば、ロードされた SWF ファイルが 4 つあり、各 SWF ファイルに view.as という同一の ActionScript が含まれているとします。この view.as ファイルの init() 関数にブレークポイントを設定するには、いずれかの view.as ファイルにブレークポイントを 1 つ設定するだけです。fdb は init() 関数を見つけると、ブレークポイントをトリガします。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート