FireBugのコンソールに行番号付きでスタックトレースを表示する手順
FireBugのコンソールに行番号付きでswfで発生した例外のスタックトレースを表示する手順です。ポイントは以下。
- デバック版Flash Playerでswfを実行。
- →発生した例外からスタックトレースが取得できるようになります。
- コンパイルオプションでデバッグをオンにしてコンパイル。
- log.asでスタックトレースを出力。
1.デバック版Flash Playerのインストール
Adobe Flex 3 ヘルプ - デバッガ版の Flash Player の使用を参考に、デバッグ版Flash Playerをインストールします。
ローカル環境(Windows XP / FireFox 3.0.1)だと、
- FireFoxを終了
- 「アプリケーションの追加と削除」からFlash Playerをいったんアンインストール。
- 「
\runtimes\player\win\Install Flash Player 9 Plugin.exe」を実行してPlayerをインストール - FireFoxを起動。
で問題なく差し換わりました。
2.デバッグをオンにしてコンパイル
コンパイルオプションでデバッグをオンにしてコンパイルします。
$ mxmlc -debug=true <コンパイル対象>
Antタスクの場合は、mxmlc要素の属性で指定すればOK
<mxmlc file="<コンパイル対象>" debug="true" output="<出力先>"> </mxmlc>
オプションの詳細は、Adobe Flex 3 ヘルプ - アプリケーションコンパイラのオプションについてを参照。
3.log.asでトレースを出力
ActionScriptのソース中で例外をキャッチしてスタックトレースを取得し、log.asを使ってFireBugに転送します。log.asの使い方は、log.asを使ってみるを参照。
var str:String = null; try { str.toString(); // nullなのでエラーになる。 } catch (error:Error) { // 例外のメッセージとスタックトレースをlog.asで出力 log(error.message + "\n" + error.getStackTrace()); }
これで、例外が発生した場合、そのスタックトレースがFireBugのコンソールに出力されるはず。環境が構築できていれば、このswfで確認できます。