flex 4から導入されたコンパイラ・オプション -compiler.omit-trace-statements
こんにちはtaro(@9re)です。
今日は中々ご紹介出来てなかったflex 4のちょっとした小ネタを提供しようと思います。
コンパイラ・オプションについては、以前にもいくつかご紹介させていただいています
さて今回ご紹介する-compiler.omit-trace-statementsというオプションは、名前の通りの機能なのですが、ヘルプを出してみます。
> mxmlc -help advanced omit -compiler.omit-trace-statements エイリアス -omit-trace-statements trace ステートメントを省略するかどうかを切り替えます
早速試してみます。Test.asとTest-config.xmlを用意します。flex-config.xmlの書き方やタグの調べ方は別エントリにまとめておきました。
traceさせるだけです。
package { import flash.display.Sprite; public class Test extends Sprite { public function Test() { trace("trace omitted?!"); } } }
<flex-config> <compiler> <debug>false</debug> <omit-trace-statements>true</omit-trace-statements> </compiler> </flex-config>
ここまで書いておいて、少し厄介なのはこれを確かめる方法です。なので結論から先に書きますと、このオプションは、
まずは、debug=trueでコンパイルします。
> mxmlc Test.as -debug=true
このモードでコンパイルすると、traceは出力されます。逆に、
> mxmlc Test.as
でコンパイルすると、traceは省略されます。
fcshのバグ
fcshでコンパイルしている方は特にご注意ください。実は、
切り替える場合は、fcshを一旦再起動してください。どうやらキャッシュしてはいけないものをキャッシュしてしまっているようです。
debug=falseのあとにdebug=trueとしてコンパイルしたswfにはtraceが省略されていて、traceが省略されていないものと比べてやや小さいswfとなります。
debugモードでは環境依存の文字をswfのバイトコードに埋め込みますので、結果は環境によって異なりますが、僕の手元では
debug=false | 571バイト前後 |
debug=false -> debug=true | 770バイト前後 |
debug=true | 793バイト前後 |
最後に、traceってどうつかうの?という方のためにもtraceについていくつかおさらいしておきます。ご存知の方は読み飛ばしてください。
traceについておさらい
traceを有効にするには?!
mm.cfg
mm.cfgというファイルを書き、ユーザ名をUSERとした場合、
- Windows XP
- C:¥Documents and Settings¥USER¥mm.cfg
- Windows Vista / 7
- C:¥Users¥USER¥mm.cfg
- Macintosh OS X
- /home/USER/mm.cfg
に保存します。mm.cfgの内容は
ErrorReportingEnable=1 TraceOutputFileEnable=1
のように書きます。
debug版flash playerのインストール
Adobeのサイトからdebug版playerをダウンロードし、インストールします。
debug playerが有効になっているかは、Adobe Flash Player のバージョンテストで調べることができます。
* Chromeをお使いの方はアドレス・バーからabout:pluginsへアクセスしてChrome内蔵のflash playerを無効にして下さい。
traceの吐かれる場所
標準の設定では、ユーザの領域に吐き出されます。仮にユーザ名をUSERとします。ここは適宜自分の環境に合わせて下さい。
- Windows XP
- C:¥Documents and Settings¥USER¥Application Data¥Macromedia¥Flash Player¥Logs¥flashlog.txt
- Windows Vista / 7
- C:¥Users¥USER¥AppData¥Roaming¥Macromedia¥Flash Player¥Logs¥flashlog.txt
- Macintosh OS X
- /Users/USER/Library/Preferences/Macromedia/Flash Player/Logs/flashlog.txt
あれ?出力されない?!
経験談で申し訳ないのですが、僕もたまになったりして焦ることがあるのですが、flash playerの再インストールで治る(個人的な経験としては、治ったこともありますし、そのようにアドバイスしたら治ったこともあります。一応。)ことがあります。どうにもならないぞ、というときは一度ためしてみるのも良さそうです。
flashlog.txtの見方
アプリでflashlog.txtを監視するものもありますが、ログが多いと、軽量なものでないとすぐに重たくなったりしてしまうことがあります。僕はログは基本的にtailで見ています。
Mac OSXには標準で入っていますが、Windowsの場合は、Windows Server 2003 Resource Kit Toolsの中にtail.exeが入っていますので、ダウンロードしてパスを通しておくと他にも便利なコマンドがあって良いでしょう。使い方は共に共通で、
> tail -f flashlog.txt
とすることで、ログを監視できます。
最後に・・・
なんでここまでして、trace使わないとイケないんだろう。なんて思ってきました。カスタムのloggerツールを使うのはそういう理由からでしょうね。
実は、カスタムのloggerを使われる時に是非使いたいコンパイラ・オプションもあるのですが、ずいぶん長い記事となってしまいましたので、また今度に・・・
どうもありがごうございました。では、またー!!