LoginSignup
0
0

More than 5 years have passed since last update.

【Fuse】Javascriptをデバッグしよう

Last updated at Posted at 2016-12-18

基本的なエラーの確認は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

などを実行して、転送を削除するのも忘れないようにしましょう。デバッグの手順は下記です。

  1. プロジェクトフォルダをcodeで開きます。
  2. サイドバーからデバッグを選択して、上の再生マークをクリックして、実行環境はnode.jsを選択します。
  3. 再生マークの横にあるドロップダウンから、プロセスに添付を選択します。

これで準備完了です。

デバッグを始める

今度は自分のコードの方にデバッグを追加して、Javascriptにブレークポイントを設定してみます。
ブレークポイントを設定するには、ブレークしたいポイントにdebugger;を書きます。もちろん関数の中に書けば、実行されるたびブレークされます。

sample.ux
<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版もこちらからビデオチュートリアルを見ることができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0