特集
» 2017年08月04日 05時00分 UPDATE

特集:Visual Studio Codeデバッグ入門:第2回 Visual Studio Codeのデバッグ構成ファイルの基本:Node.js編 (1/3)

Visual Studio Codeはlaunch.jsonファイルで構成を行うことで、デバッグをさまざまに構成可能だ。Node.jsを対象に構成ファイルの取り扱いの基本を説明する。

[かわさきしんじ,Insider.NET編集部]
「特集:Visual Studio Codeデバッグ入門」のインデックス

連載目次

 前回は、Visual Studio Code(以下、VS Code)でデバッグを行うために基本事項を取り上げた。その中で最後に説明したlaunch.jsonファイル(デバッグの構成ファイル)について見てみよう。

launch.jsonファイルの概要

 前回も述べた通り、launch.jsonファイルは[デバッグ]ビューにある['launch.json' を構成または編集してください]ボタン(歯車のボタン)をクリックすることで、作成できる。このときに、VS Codeがどの環境でのデバッグ構成を行おうとしているのかを自動的に判断してくれるが、うまく判断できなかった場合には、問い合わせを行うメッセージが表示されるので、そこでデバッグ環境を指定してやる。以下はExpressベースのアプリをexpress-generatorを使用して作成し、launch.jsonファイルを作成しようとしたところだ。

構成用のボタン(赤枠内)をクリック。すると、以下のような問い合わせが行われることもある
構成用のボタン(赤枠内)をクリック。すると、以下のような問い合わせが行われることもある
その場合は、環境を選んで指定してやる
その場合は、環境を選んで指定してやる

構成ファイルの作成


 ここではNode.js+Expressな環境でデバッグを行うので、[Node.js]を選択した。すると、次のようなlaunch.jsonファイルが作成される。ファイルが作成されるのは、VS Codeで開いている最上位のディレクトリにある.vscodeディレクトリだ。

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceRoot}\\bin\\www"
    }
  ]
}


作成されたlaunch.jsonファイル

 なお、launch.jsonファイルの生成時には、VS Codeがpackage.jsonファイルの内容などを見て、自動的に構成を行ってくれる部分もある(上のprogram属性など)。では、このファイルの内容について見ていこう。

launch.jsonファイルに記述する属性

 launch.jsonファイルは、さまざまな環境に応じて、さまざまな構成で作成されるが、それら全てで必須となる属性としては以下のものがある。

属性 説明
type デバッガーの種別
request デバッグ時にプログラムを起動するか(launch)、既に起動しているプログラムにデバッガーをアタッチするか(attach)
name デバッグ構成として表示する名前
必須の属性

 上に示したlaunch.jsonファイルを見ると、type属性の値はもちろん"node"となっている。request属性の値は新規にプログラムを起動することを意味する"launch"に、name属性の値は"Launch Program"となっていて、これがデバッグに使用する構成の名前としてVS Codeに表示される。

launch.jsonファイル作成後、[デバッグ]ビューに[Launch Program]と表示されているところ launch.jsonファイル作成後、[デバッグ]ビューに[Launch Program]と表示されているところ
(1)に示すように、name属性に指定した値が[デバッグの開始]ボタンに現在のデバッグ構成として表示される。

 最後のprogram属性はデバッグ実行時に起動するプログラムのパスを指定するもので、多くのデバッグ環境がサポートしている。前述した通り、ここではExpressベースのプロジェクトをexpress-generatorを使用して作成したので、そのエントリポイントとなる「bin\www」ファイルが指定されている。

 request属性には"launch"か"attach"を指定可能であり、前者を指定すればデバッグ開始時にプログラムが新規に起動され、後者を指定すれば既に起動中のプログラムにアタッチする。アタッチ用の構成を加えると、launch.jsonファイルは次のようになる。

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceRoot}\\bin\\www"
    },
    {
      "type": "node",
      "request": "attach",
      "name": "Attach Program"
    }
  ]
}


アタッチ用の構成を追加したlaunch.jsonファイル

 アタッチ用の構成では、起動するプログラムのパスは不要なので記述しない(記述できない)。このような構成にすると、[デバッグの開始]ボタンの右にあるドロップダウンに2つの構成が表示されるようになる。このような設定にすれば、コンソールや統合ターミナルなどからプログラムをデバッグモードで起動している状態で、[Attach Program]を選択してデバッグを実行すれば、起動中のプログラムにアタッチできる。これについては後で実際に見てみよう。

2つの構成が表示されるようになった 2つの構成が表示されるようになった

 Node.js用のlaunch.jsonファイルには、この他にも多くの属性を記述可能だ。そのうちの幾つかを抜粋して以下に示す。まずはrequest属性が"launch"でも"attach"でも使用できるものから。

属性 説明
protocol デバッグに使用するプロトコル
port/address デバッグで使用するポート/IPアドレス
stopOnEntry プログラム起動直後にデバッグ実行を中断するか
sourceMaps ソースマップを有効にするかどうか
outFiles トランスパイル後のJavaScriptファイルの位置を指定。ソースマップ有効時に指定する
smartStep ソースマップの対象外のコードのステップ実行を省略するかどうか
skipFiles ステップ実行の対象外とするファイルを指定
trace 診断出力の設定
request属性が"launch"でも"attach"でも記述可能な属性

 request属性が"launch"の場合には、以下の属性もサポートされる。

属性 説明
program 起動するプログラムのパス
args デバッグ実行時にプログラムに渡す引数
cwd デバッグ実行を行うディレクトリ
runtimeExecutable 使用するランタイム環境
runtimeArgs ランタイム環境に渡す引数
env 環境変数の指定
envFile 環境関数を定義したファイル
console プログラムを起動するコンソールの種類を指定
request属性が"launch"の場合にサポートされる属性

 request属性が"attach"の場合には以下がサポートされる。

属性 説明
processId アタッチするプロセスのプロセスID
request属性が"attach"の場合にサポートされる属性

 この他にも、デバッグを開始する前に実行するタスクを指定するpreLaunchTask属性、デバッグコンソールの表示を制御するinternalConsoleOptions属性などを利用可能だ。次ページではExpressベースのプログラムを実際にデバッグ実行しながら、幾つかの属性を見てみよう。

       1|2|3 次のページへ

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。