こんにちは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モードの切り替えによって、traceを省略したり、有効にしたりします。

 

まずは、debug=trueでコンパイルします。

> mxmlc Test.as -debug=true

このモードでコンパイルすると、traceは出力されます。逆に、

> mxmlc Test.as

でコンパイルすると、traceは省略されます。

 

fcshのバグ

fcshでコンパイルしている方は特にご注意ください。実は、

 

debug=falseのあとdebug=trueに設定しなおしてもtraceは有効にならないバグがあります。

 

切り替える場合は、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を使われる時に是非使いたいコンパイラ・オプションもあるのですが、ずいぶん長い記事となってしまいましたので、また今度に・・・

どうもありがごうございました。では、またー!!

HTML5飯