はじめに
App Service on Linux Node Runtime では、リモートデバッグ機能がプレビュー提供されています。
VS Code を使って簡単に App Service 上のアプリケーションにローカル環境のデバッガをアタッチすることができます。
TL;DR
具体的な使い方はVS Code の公式ドキュメント に載っています。
百聞は一見にしかずということで以下の5分ほどの動画を見るのが早いです。
事前準備
- アプリケーションコードをローカル環境に用意する
- App Service on Linux Node Runtime にアプリケーションコードをデプロイ
- VS Code にApp Service 拡張機能をインストール
使い方
開始方法
Resources Explore から目的のリソースを右クリックして [Start Remote Debugging]を実行します。
このとき、アプリケーションの再起動や接続までに数十秒かかることがあります。
無事デバッガがアタッチされたら、あとはローカル環境にアタッチした時と同じように利用できます。
Breakpoints/Logpoints の設定
ソースコードの任意の行にシンプルに停止するだけの Breakpoint や、条件付きで停止することができる Conditional Breakpoints、Hit count breakpoints、停止せずにログ出力だけをインジェクトする Logpoints が利用できます。
Breakpoints/Logpoints の詳細な使い方は以下を参照ください。
以下は、Hit count > 5
としているため、該当行の処理が 6 回目に行われた際に停止している例となります。
Debug Console から値を書き換えることも可能です。以下はアプリケーションコードが、res.render
する前に、res.send("Hello from debugger!")
と実行した例です。
Breakpoints は処理が完全に停止しますが、Logpoints の場合は処理を停止させることなく、該当行実行時にログをインジェクトすることができます。
{}
で変数を囲むことで、その値をログ出力することができます。
Performance profile
CALL STACK ビューから、CPU Profile、Heap Profile、Heap Snapshot の取得が可能です。取得した各プロファイルはローカル側に保存されます。
Performance profile の詳細な使い方は以下を参照ください。
注意点/所感
-
リモートデバッグは便利な機能ですが、以下のような影響からユーザーエクスペリエンスを損ねるため、本番環境での利用は控えたほうがよさそう
- リモートデバッグの開始/終了時には WebApps の再起動が発生します。
- BreakPoint を設定すると、アプリケーションが止まってしまう可能性がある。
-
開発・検証用途においては、ローカルでは再現しないけど、App Service にデプロイすると発生する事象などの解析には便利かもしれない
-
ポータルから [構成] > [全般設定]で確認できるリモート デバッグ とは連動していないようです。