VS CodeでPythonコードのデバッグも楽々!!:Visual Studio Codeで始めるPythonプログラミング(4/4 ページ)
ブレークポイント、ステップ実行など、本格的なIDEと遜色ない機能を使って、VS CodeでPythonコードをデバッグしよう。
launch.jsonファイルで設定可能な項目
最後に、launch.jsonファイルで行うデバッグ構成で指定可能な項目を幾つか紹介して本稿を終わりにしよう。指定可能な項目の例は自動生成されたlaunch.jsonファイルの末尾にも記載されている。
{
"version": "0.2.0",
"configurations": [
// …… 省略 ……
{
"name": "Python: All debug Options",
"type": "python",
"request": "launch",
"pythonPath": "${config:python.pythonPath}",
"program": "${file}",
"module": "module.name",
"env": {
"VAR1": "1",
"VAR2": "2"
},
"envFile": "${workspaceFolder}/.env",
"args": [
"arg1",
"arg2"
],
"debugOptions": [
"RedirectOutput"
]
}
]
}
ちなみに本稿で使用した[Python: Current File]構成の内容は次のようになっていた。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"stopOnEntry": true
},
// …… 省略 ……
]
}
以下に設定可能な項目を示す。詳細については「Standard configuration and options」を参照されたい。
- name:構成名。これが構成名として[デバッグの開始]ボタンの隣に表示される
- type:デバッガーの種類を指定。Pythonの場合は「"python"」で固定
- request:デバッグ実行開始時に、program項目で指定したファイルを実行するか("launch")、実行中のプログラムにアタッチするか("attach")
- program:デバッグ実行開始時にエントリポイントとするPythonモジュールの名前。通常は「${file}」であり、これはエディタで現在アクティブになっているファイルを示す。ちなみに、launch.jsonファイルがアクティブになっている状態で、デバッグを開始するとエラーが発生するので注意しよう
- pythonPath:デバッグ実行に使用するPython処理系へのパス。指定しなかった場合には、デフォルト設定/ユーザー設定/ワークスペース設定にあるpython.pythonPath項目の値が使われる。本稿では、仮想環境を作成していたので、ワークスペース設定でその環境で使用するpythonコマンドへのパスが設定されているので、これが使われたはずだ
- module:デバッグ対象のモジュール名を指定する。module項目を指定した場合、program項目の値が上書きされる
- args:プログラムに渡す引数を指定する
- stopOnEntry:デバッグ実行開始時にプログラムを中断するかを指定
- console:デバッグするプログラムの出力先を指定する。指定可能な値は"none"(統合ターミナルの[Python Debug Console]に出力)、"integratedTerminal"(統合ターミナルに出力)、"externalTerminal"(外部ターミナルに出力)
- cwd:デバッグ実行を行う際の作業ディレクトリを指定する
- debugOptions:デバッグオプションを配列に指定する。詳細は「debugOptions」を参照のこと
- env:プログラム実行に必要な環境変数を記述する
- envFile:プログラム実行に必要な環境変数を記述したファイルを指定する
本稿では、VS Code(+Python拡張機能)でPythonコードをデバッグする際の基本を紹介した。Webアプリなど、本格的なプログラムのデバッグとなると、今回ほど簡単ではないかもしれないが、それでもVS Codeが持つデバッグ機能は優秀なもので、多くのプログラマーの助けとなるはずだ。そして次回は、VS CodeからJupyterを使ってみよう。
Copyright© Digital Advantage Corp. All Rights Reserved.