Windows版のIMEのコードのログをとる方法

Windows版のIMEのコードは、Firefox 3.6以降 (Gecko 1.9.2以降)、nsWindowから分離され、nsIMM32Handlerクラスで処理されるようになりました。この修正時に、このクラスのログをリリースビルドでも記録することができるようにしています。これにより、開発者が所有していないサードパーティ製のIMEでのみ発生するバグがあったとしても、バグを再現できる人が開発者に対してログを提出することで原因を調査を助けることができるようになりました。

ログをとるには、環境変数を二つ、追加する必要があります。

まず、NSPR_LOG_FILEという環境変数を追加してください。この環境変数にはログファイルのパスを設定します。c:\fx_imm32.logのように、Windowsのパス形式で書き込み可能なパスを記述してください。

次に、NSPR_LOG_MODULESという環境変数を追加してください。この環境変数にはnsIMM32HandlerWidgets:1を設定してください。

これらの環境変数を追加した後に、Firefox 3.6以降を起動すれば(すでに起動している場合はFirefoxを再起動してください)、NSPR_LOG_FILEに指定したファイルが作成され、ログが逐一記録されていきます(ログファイルはUTF-8です)。

nsIMM32Handlerは非常に多くのログを記録します。ですので、なんらかのバグのためにbugzillaにログを提出する場合は、起動させた直後にバグを再現させ、そのまますぐに終了してください。余計な動作はログを読みにくくしますし、また、入力された文字は全てログに残るので、提出する際にプライバシーの問題が出てきます。

テスト後には環境変数を削除するのを忘れないようにしてください。ログを出力している分、動作速度は落ちてしまいますし、ログの出力先がSSDの場合はSSDの寿命を縮めてしまうかもしれません。

ログをリアルタイムで表示させたい場合、私はSSLogMonというソフトを使っています。もし、他にもこのようなソフトをご存じの方が居たら、紹介してもらえるとありがたいです。