0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

App Service on Linux 上の Node アプリケーションを VS Code でリモートデバッグする方法

Posted at

はじめに

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]を実行します。
このとき、アプリケーションの再起動や接続までに数十秒かかることがあります。
image.png

無事デバッガがアタッチされたら、あとはローカル環境にアタッチした時と同じように利用できます。

Breakpoints/Logpoints の設定

ソースコードの任意の行にシンプルに停止するだけの Breakpoint や、条件付きで停止することができる Conditional Breakpoints、Hit count breakpoints、停止せずにログ出力だけをインジェクトする Logpoints が利用できます。

Breakpoints/Logpoints の詳細な使い方は以下を参照ください。

以下は、Hit count > 5 としているため、該当行の処理が 6 回目に行われた際に停止している例となります。
image.png

Debug Console から値を書き換えることも可能です。以下はアプリケーションコードが、res.render する前に、res.send("Hello from debugger!") と実行した例です。

image.png

Breakpoints は処理が完全に停止しますが、Logpoints の場合は処理を停止させることなく、該当行実行時にログをインジェクトすることができます。
{} で変数を囲むことで、その値をログ出力することができます。

image.png

Performance profile

CALL STACK ビューから、CPU Profile、Heap Profile、Heap Snapshot の取得が可能です。取得した各プロファイルはローカル側に保存されます。
image.png

image.png

Performance profile の詳細な使い方は以下を参照ください。

注意点/所感

  • リモートデバッグは便利な機能ですが、以下のような影響からユーザーエクスペリエンスを損ねるため、本番環境での利用は控えたほうがよさそう

    • リモートデバッグの開始/終了時には WebApps の再起動が発生します。
    • BreakPoint を設定すると、アプリケーションが止まってしまう可能性がある。
  • 開発・検証用途においては、ローカルでは再現しないけど、App Service にデプロイすると発生する事象などの解析には便利かもしれない

  • ポータルから [構成] > [全般設定]で確認できるリモート デバッグ とは連動していないようです。

image.png

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?