Visual Studio Codeはlaunch.jsonファイルで構成を行うことで、デバッグをさまざまに構成可能だ。Node.jsを対象に構成ファイルの取り扱いの基本を説明する。
前回は、Visual Studio Code(以下、VS Code)でデバッグを行うために基本事項を取り上げた。その中で最後に説明した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ファイルの生成時には、VS Codeがpackage.jsonファイルの内容などを見て、自動的に構成を行ってくれる部分もある(上のprogram属性など)。では、このファイルの内容について見ていこう。
launch.jsonファイルは、さまざまな環境に応じて、さまざまな構成で作成されるが、それら全てで必須となる属性としては以下のものがある。
属性 | 説明 |
---|---|
type | デバッガーの種別 |
request | デバッグ時にプログラムを起動するか(launch)、既に起動しているプログラムにデバッガーをアタッチするか(attach) |
name | デバッグ構成として表示する名前 |
必須の属性 |
上に示したlaunch.jsonファイルを見ると、type属性の値はもちろん"node"となっている。request属性の値は新規にプログラムを起動することを意味する"launch"に、name属性の値は"Launch Program"となっていて、これがデバッグに使用する構成の名前としてVS Codeに表示される。
最後の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"
}
]
}
アタッチ用の構成では、起動するプログラムのパスは不要なので記述しない(記述できない)。このような構成にすると、[デバッグの開始]ボタンの右にあるドロップダウンに2つの構成が表示されるようになる。このような設定にすれば、コンソールや統合ターミナルなどからプログラムをデバッグモードで起動している状態で、[Attach Program]を選択してデバッグを実行すれば、起動中のプログラムにアタッチできる。これについては後で実際に見てみよう。
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ベースのプログラムを実際にデバッグ実行しながら、幾つかの属性を見てみよう。
Copyright© Digital Advantage Corp. All Rights Reserved.