基本的なエラーの確認はFuse Monitorを使うことができます。Monitorはローカル実行時のみ、(command or Ctrl) + m
で開くことができます。これで、実行時にどの部分でエラーが発生したかがわかります。コンパイルエラーに関しては、コマンドラインやエディターから実行すれば、どこでエラーが発生しているかを確認できると思います。
さて、今回はFuseでのJavascriptのもう少し細かいデバッグの仕方を説明します。大きく分けて、iOSをターゲットに実行する場合、それ以外をターゲットにする場合でデバッグ方法が違うので、分けて説明します。
###それ以外のほう
それ以外のほうには、V8エンジンで実行されるものを含んでいます。具体的には、Android、DotNet(ローカルプレビューを含む)、CMake、Microsoft Visual C++が含まれます。Fuseは基本的にV8エンジンでJSを実行します。
-DDEBUG_V8
オプションをつけてビルドされたアプリケーションはport:5858のソケットの接続を購読します。V8デバッガープロトコルを備えたデバッガーは基本的に動作するはずですが、Mac OSとWindowsで使用できる、Visual Studio Codeを推奨しています。
###codeのセットアップ
まずはこちらからcodeをダウンロードします。終わったら、デバイスのポートをFuse用に設定します。uno adb
コマンドを使うことで、設定することができます。
uno adb forward tcp:5858 tcp:5858
終わったら、
uno adb forward --remove-all
などを実行して、転送を削除するのも忘れないようにしましょう。デバッグの手順は下記です。
- プロジェクトフォルダをcodeで開きます。
- サイドバーからデバッグを選択して、上の再生マークをクリックして、実行環境は
node.js
を選択します。 - 再生マークの横にあるドロップダウンから、
プロセスに添付
を選択します。
これで準備完了です。
###デバッグを始める
今度は自分のコードの方にデバッグを追加して、Javascriptにブレークポイントを設定してみます。
ブレークポイントを設定するには、ブレークしたいポイントにdebugger;
を書きます。もちろん関数の中に書けば、実行されるたびブレークされます。
<JavaScript>
var _test = "hoge";
debugger;
module.exports = {
test: _test
}
</JavaScript>
設定し終わったら、-DDEBUG_V8
オプションをつけて、実行します。
アプリが立ち上がったら、VSCodeのデバッグ開始ボタンをクリックします。あとはブレイクポイントを設定した場所まで操作すれば、設定した箇所でアプリが停止し、左側に変数などが一覧されると思います。
#####デバッグ出来ないとき
自分の場合、debugger
を書いてもちゃんと動作しませんでした。debugger
と同時に、同じポイントにVSCodeのブレークポイント(行番号の左側のやつ)を設定すると動作しました。また、preview
実行時も動作しなかったので、build
して確認しました。
fuse build -t=Android -r -DDEBUG_V8
windowsではファイヤーウォールが接続を要求してくる場合は許可してください。
こちらからビデオチュートリアルを見ることもできます。
###iOS
iOSでのデバッグはiOS 8.0以降のみに対応しています。設定アプリからsafariの項目を開いて、webインスペクターをONにしておいてください。また、実行するPC側のsafariの開発メニューも表示しておきます。iOS側の準備はこれだけです。
準備ができたら、デバイスプレビューを実行します。アプリが立ち上がったら、PC側のsafariを開いて、開発メニューから実行しているデバイスを選択しJSContext
を選択します。
そうすると、Webインスペクタからデバッグすることができます。デバッガのタブを選んでブレークポイントを設定したりすることができます。
iOS版もこちらからビデオチュートリアルを見ることができます。