Firefox OS (b2g) のデバッガの現在
Firefox OS(b2g)はそんなに詳しいわけじゃないんだけど、概要だけ述べると、Firefox for Android と同様に Firefox の Remote Debugger を使うことになる。このリモートデバッグ用のプロトコルは Firefox/Gecko 独自のものなので、Chrome Developer Tools とかは繋げない。 Remote Debugging Firefox OS with Weinre ✩ Mozilla Hacks – the Web developer blog に Weinre を使って Remote Debug する方法が出ている。とりあえず紹介まで。
繋ぎ方はココとか参考にしましょう。Firefox OS の pref.js の変更の仕方は自分で探してください。Firefox OS Simulator も同様に devtools.debugger.remote-enabled;true
で、内部のデバッグサーバーが有効になる。ちなみにデバッグサーバーが待ち受ける port 番号には、現在、 devtools.debugger.remote-port
の値が使われている(デフォルト値は 6000
)。なので、ローカルで手筈を整えた Firefox OS Simulator を起動しておけば、Remote Debugger が普通に繋げたりする。
これだけならハッピーに聞こえるんだけど、そんなに甘くない。
Firefox OS 上で動く Gecko のプロセスは b2g process と content process の二種類。キーボードとか Wifi とか、システムに関わる範囲のものは b2g process で動く。一方、アプリは全部 content process の方で動く。詳しくは Security model - Mozilla | MDN とか読みましょう。
で、現在の Firefox の Remote Debugger は、content process に接続できないので、結果、アプリのデバッグを Remote Debugger で出来ない、というオチ。
たぶん 797627 – Remote Debugging Protocol needs a way to contact B2G subprocesses が解決すれば、以上の手順を踏めばデバッガを接続できるようになると思うし、いずれは Firefox OS 上でデバッグオプションの設定が GUI で可能になると思う。
Firefox OS Simulator 1.0 でも、アプリに対して Remote Debugger を接続するには、 Firefox OS 上で「Setting」-> 「Device information」->「More Information」->「Developer settings/Developer」と開き、
- 「Disable out-of-process」を有効にする( シングルプロセスで動作させることで先述の bug 797627 の制限を回避)
- 「Remote debugging」を有効にする(
devtools.debugger.remote-enabled;true
と同義)
を設定する。
こうすれば、localhost:6000
に対して Remote Debugger を繋げば、アプリのコードもデバッガでデバッグできる。
(よく設定を調べないとダメですね……)