- 2007-08-30 0:00
- papervision3d
ActionScript3.0のデバッグは難しい。
というのもプログラミングで定番のプリントデバッグができないからです。
そこで便利なのがデバッガ。
FlexBuilderではコーディングしながらデバッガを利用できて非常に便利です。
しかし、有料。日曜プログラマには少々お高い。
そこで登場するのが標準デバッガのfdb。
コマンドラインでの実行になりますので、少し敷居は高いかもしれませんが、デバッガを使うぐらいの人なら問題ではないと思います。(私は基本的にコマンドラインでActionScript3.0をコンパイルしています)
Flex SDK2を取得していれば、デバッグ用Flash Playerは以下のフォルダにあります。
Windows用なら「Install Flash Player 9.exe」を、Mac用なら「SAFlashPlayer.dmg」をマウントして「SAFlashPlayer.app」をインストールして下さい。
ちなみにこの「SA」は「Stand Alone」の意味です。
fdbを実行するとSWFに関連づけられているアプリケーションが実行されます。
これが上でインストールしたアプリケーションでなければなりません。
ということでSWFファイルをFlash Playerに関連づけて下さい。
Macでの方法を示しておきます。
SWFファイルを右クリックしこのアプリケーションで開くを選択。

そこでその他を選択。
アプリケーションを選択するウィンドウが開きますので、「SAFlashPlayer」を検索します。

SAFlashPlayer.appを選択して「常にこのアプリケーションで開く」にチェックを入れておきます。
これで準備完了です。
ActionScript3.0をmxmlcコマンドでコンパイルするのですが、その時にデバッグモードというオプションを付ける必要があります。デバッグオプションは私の知る限り3通り指定方法があります。
オプションをコマンドライン上で付ける方法は2通りあります。
もしくは
これでデバッグ用のコンパイルが完了します。
毎回デバッグオプションを付けるのが面倒であれば、configファイルに設定しておくとラクです。
AmazonWebservice-config.xml
<flex-config>
<compiler>
<debug>ture</debug>
</compiler>
</flex-config>これでデバッグモードでコンパイルされたSWFファイルが生成されました。
ではさっそくfdbを実行します。
実行は至って簡単です。
このコマンドを実行するとfdbコマンドプロンプトが起動します。
fdbのコマンドは沢山ありますが、とりあえず以下の4つぐらいを覚えておけば良いと思います。
- c (continue): 実行を継続する
- b (break): ブレークポイントを指定する
- n (next): プログラムを一行実行する
- p (print): 変数の値を表示する
長いコマンドを打つのは疲れるので左側の省略版のコマンドが便利です。
今回用いるサンプルは前回のエントリ「Amazon Web ServiceをActionScript3.0から利用する方法」のソースコードです(ちょっとだけ変更しています)。
[AmazonWebservice.as]
package { import flash.display.Sprite; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.Event; public class AmazonWebservice extends Sprite { private var loader:URLLoader; public function AmazonWebservice() { var url:String = "http://webservices.amazon.co.jp/onca/xml?" + "Service=AWSECommerceService&" + "AWSAccessKeyId=[アクセスキーID]&" + "Operation=ItemSearch&" + "SearchIndex=Books&" + "Keywords=actionscript&" + "ResponseGroup=Request,Small"; loader = new URLLoader(); loader.addEventListener(Event.COMPLETE, completeFnc); loader.load(new URLRequest(url)); } private function completeFnc(event:Event):void { var ns:String = "http://webservices.amazon.com/AWSECommerceService/2005-10-05"; default xml namespace = new Namespace(ns); var xml:XML = new XML(loader.data); var asin:String; for each(var item:XML in xml..Item) { asin = item.ASIN[0]; trace(asin); } } } }
まずはデバッグオプション付きでコンパイルします。
fdbを起動します。
AmazonWebservice.asファイルの33行目にブレークポイントを設定します。
ちなみにブレークポイント等の情報を表示してみます。
Num Type Disp Enb Address What
1 breakpoint keep y 0×00000000 の場所にある completeFnc() 内 AmazonWebservice.as:33
コマンドの「i b」とは「info breakpoints」の省略形です。
infoコマンドはその他にも色々な情報を取得できます。
info サブコマンドのリスト :
- info arguments (i a) 現在のスタックフレームの引数の変数です。
- info breakpoints (i b) ユーザーが設定可能なブレークポイントのステータスを表示します。
- info display (i d) auto-display 式のリストを表示します。
- info files (i f) デバッグ中のターゲットとファイルの名前を表示します。
- info functions (i fu) すべての関数名を表示します。
- info handle (i h) 失敗の処理方法を表示します。
- info locals (i l) 現在のスタックフレームのローカル変数です。
- info sources (i so) プログラムのソースファイルを表示します。
- info stack (i s) スタックのバックトレースです。
- info swfs (i sw) このセッションの swf のリストです。
- info targets(i t) デバッグ中のアプリケーションです。
- info variables (i v) すべてのグローバル変数と静的変数の名前を表示します。
横道にそれました。
ブレークポイントまでプログラムを走らせます。
理由 : ブレークポイント 1、関数名 : completeFnc()、場所 : AmazonWebservice.as:33
33 trace(asin);
continueコマンドでプログラムをブレークポイントまで走らせられます。
ブレークポイントを設定した通りAmazonWebservice.asの33行目でプログラムが停止しています。
この状態で色々なデバッグを行います。
変数「asin」に格納された値を取得します。
$1 = “4881665901″
ASIN値が取得できました。素晴らしい。
ちなみに、E4Xで値を取得する事ができません。
変数 ASIN が不明です
式を評価できませんでした。
ん〜…他に何か方法があるのでしょうか…。
さらにプログラムの実行を進めます。
理由 : ブレークポイント 1、関数名 : completeFnc()、場所 : AmazonWebservice.as:33
33 trace(asin);
forループを一周し、再び33行目で停止しました。
再び変数「asin」の値を取得してみましょう。
$2 = “4839917396″
現在デバッグ中のプログラムを終了するには「k(kill)」コマンドです。
デバッグ中のプログラムを強制終了しますか? (y または n) y
fdbを終了するには「q(quit)」コマンドです。
ちなみに、fdbのコマンド一覧を取得するコマンドは「h(help)」です。
fdb を初めて使用する場合は、’tutorial’ を実行し、基本情報を確認してください。
fdb コマンドの一覧 :
bt (bt) すべてのスタックフレームのバックトレースをプリントします。
break (b) 指定された行または関数にブレークポイントを設定します。
cf (cf) 現在のファイルの名前と番号を表示します。
clear (cl) 指定された行または関数のブレークポイントをクリアします。
condition (cond) ブレークポイントに対する条件式を適用または削除します。
continue (c) ブレークポイントで停止した後に実行を続行します。
commands (com) ブレークポイントに達したときに実行するコマンドを設定します。
delete (d) ブレークポイントまたは auto-display 式を削除します。
directory (dir) ソースファイルの検索パスにディレクトリを追加します。
disable (disab) ブレークポイントまたは auto-display 式を無効にします。
disassemble (disas) ソース行または関数を逆アセンブルします。
display (disp) auto-display 式を追加します。
enable (e) ブレークポイントまたは auto-display 式を有効にします。
file (fil) デバッグするアプリケーションを指定します。
finish (f) 現在の関数が返されるまで実行します。
handle (han) 失敗の処理方法を指定します。
help (h) fdb コマンドに関するヘルプを表示します。
home (ho) 実行を中止する箇所にリストの場所を設定します。
info (i) デバッグ中のプログラムに関する情報を表示します。
kill (k) デバッグ中のプログラムの実行を強制終了します。
list (l) 指定した関数または行を一覧表示します。
next (n) プログラムを次の段階に進めます。
print (p) 変数 EXP の値をプリントします。
pwd (pw) 作業ディレクトリをプリントします。
quit (q) fdb を終了します。
run (r) デバッグしたプログラムを起動します。
set (se) 変数の値を設定します。
source (so) ファイルから fdb コマンドを読み取ります。
step (s) 別のソース行に達するまで、プログラムを進めます。
tutorial (t) fdb の使用方法に関するチュートリアルを表示します。
undisplay (u) auto-display 式を削除します。
viewswf (v) swf に基づいて、ファイルの一覧表示のフィルタを設定またはクリアします。
what (wh) 変数のコンテキストを表示します。
where (w) bt と同じです。
詳細を確認するには、’help’ の後にコマンド名を入力します。
今回はFlexBuilderがセレブ価格で庶民には手が届かないので無料のfdbを使ってActionScript3.0をデバッグしましょうという話。統合開発環境ぐらい無料で提供してほしいものです。ActionScript3.0の発展にも繋がる事ですし…。
- Newer: Papervision3DのMovieMaterialを使ってテクスチャを生成する方法
- Older: Amazon Web ServiceをActionScript3.0から利用する方法
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://www.adamrocker.com/blog/151/actionscript30_flex_debugger_fdb.html/trackback/
- Listed below are links to weblogs that reference
- ActionScript3.0の標準デバッガのfdbを使う方法 from throw Life
