VS CodeでPythonコードのデバッグ構成をしてみよう:Visual Studio Codeで快適Pythonライフ(1/2 ページ)
VS Codeではlaunch.jsonファイルを使って、デバッグをどのような形で行うかの構成を行えます。その基本的な構成方法や構成可能な項目を紹介。
デバッグ構成
前回は[実行とデバッグ]ビューにある[実行とデバッグ]ボタンからデバッグを開始して、Visual Studio Code(以下、VS Code)が提供するデバッグツールバーの使い方や、[実行とデバッグ]ビューに表示される各種情報などを見ました。今回はデバッグ構成について見ていくことにします。
「デバッグ構成」とは、デバッグをどのようにして行うかを指定することです。例えば、デバッグ用にプログラムを新規に起動するとか、最初に実行するファイルをどれにするかとか、デバッグの出力をVS Codeに統合されたターミナルへ送るか、外部のターミナルプログラムに送るかなどを指定します。
これらの構成は「launch.json」という名前のファイルに保存されます。その保存先は、プロジェクトフォルダの直下にある.vscodeフォルダです。そして、このファイルを実際に作成するのが、前回にも見た[実行とデバッグ]ビューにある[launch.jsonファイルを作成します]リンクです。
このリンクをクリックすると、どんな種類のデバッグを行うかのドロップダウンが表示されます。
ここでは[Python File]を選択しましょう。これは前回も見た「現在エディタでアクティブになっているファイルを対象にデバッグを開始する」構成です。そのコードは次のようなものです(コメントは削除してあります)。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
]
}
"configurations"属性の下には、複数の構成を記述することも可能です(後で実際に追加してみましょう)。ここでは構成は1つだけで、以下のような要素が指定されています。
- "name"属性:デバッグ構成の名前。[実行とデバッグ]ビューのドロップダウンに表示される
- "type"属性:使用するデバッガの種類。ここではPythonのコードをデバッグするので"python"となる
- "request"属性:デバッグを開始するモード。特定のファイルを起動してデバッグを開始するのであれば"launch"を、既に動いているプログラムにデバッガをアタッチするなら"attach"を指定する。ここではデバッグ用にファイルを実行するので"launch"が指定されている
- "program"属性:"request"属性の値が"launch"の場合に、デバッグ開始時に実行するファイルを指定する。ここで指定されている"${file}"は、エディタ領域で現在アクティブになっているファイルを意味する
- "console"属性:プログラムの出力先の指定。パネル領域のデバッグコンソールか("internalConsole")、パネル領域のターミナルか("integratedTerminal"。デフォルト値)、外部のターミナルか("externalTerminal")を選択可能
launch.jsonファイルが作成されると同時に、[実行とデバッグ]ビューの表示は次のように変わります。
[実行とデバッグ]ビューに表示されているのは、前回にデバッグ実行を開始した後のビューと同じです(ただし、デバッグ実行が始まっていないので、具体的な情報は何も表示されていません)。上部のドロップダウンには上で紹介した"name"属性に指定してあるデバッグ構成の名前が表示されていることにも注目してください。ドロップダウンの左側には[デバッグの開始]ボタンがあります。つまり、ドロップダウンで構成を選んで、[デバッグの開始]ボタンでデバッグを開始するというのが、デバッグ構成を行った後の一般的なデバッグ開始パターンです。
プログラムを起動してデバッグを行う
まずは、先ほど作成したデバッグ構成を使って、デバッグを実行してみましょう。コードは前回までに見たものとします。つまり、以下に示す2つのファイルのうち、main.pyをスタート地点としてデバッグを行います。
from mymath import fib, fib_l, fib_m
def main():
print(f'result of {fib.__name__}(10): {fib(10)}')
print(f'result of {fib_l.__name__}(10): {fib_l(10)}')
print(f'result of {fib_m.__name__}(10): {fib_m(10)}')
if __name__ == '__main__':
main()
def fib(n):
if n == 0:
return 0
if n == 1:
return 1
return fib(n - 2) + fib(n - 1)
def fib_l(n):
a = 0
b = 1
if n == 0:
return a
elif n == 1:
return b
for _ in range(n - 1):
a, b = b, a + b
return b
def fib_m(n, memo=None):
if not memo:
memo = {0: 0, 1: 1}
if n not in memo:
memo[n] = fib_m(n - 2, memo) + fib_m(n - 1, memo)
return memo[n]
ここでは以下のようにmain関数呼び出しにブレークポイントを設定しました。
今のところ、作成したデバッグ構成は1つだけなので、[実行とデバッグ]ビューのドロップダウンには[Python: Current File]が表示(選択)されているはずです。先ほども述べましたが、デフォルトの構成ではデバッグ開始時にエディタ領域でアクティブになっているファイルを起動するので、エディタ領域でmain.pyファイルがアクティブになっていることを確認した上で[デバッグの開始]ボタンをクリック(するか、[F5]キーを押すか)すると、デバッグが始まって、以下のようにmain関数を呼び出す直前でプログラムの実行が中断されます。
この後はステップ実行を行いながら、変数の値などを確認していくわけですが、その基本については前回に見たので、ここではデバッグツールバーの[停止]ボタンをクリックするか、[Shift]+[F5]キーを押してデバッグを中止しましょう。
次ページでは、デバッグ構成のカスタマイズについて簡単に見ていきましょう。
連載一覧
- 第1回「Visual Studio Codeから「Hello Python」してみよう」
- 第2回「VS Codeでのファイルの作成と編集の第一歩:アクティビティーバーと[エクスプローラー]ビューを使ってみよう」
- 第3回「VS CodeでのPythonコーディングを快適にするエディタ機能の使い方」
- 第4回「コマンドパレットを駆使してVS Codeを使いこなそう!」
- 第5回「ショートカットキーを活用して、VS Codeをより快適に!」
- 第6回「ここから始めるVS Codeのカスタマイズ」
- 第7回「フォントからエディタ、改行文字まで、VS Codeを自分好みにカスタマイズ」
- 第8回「VS Codeの拡張機能でPythonの仮想環境構築からコード整形、Lintまでを体験してみよう」
- 第9回「VS Codeを使ってPythonコードをデバッグするための基礎知識」
- 第10回「VS CodeでPythonコードのデバッグ構成をしてみよう」(本稿)
Copyright© Digital Advantage Corp. All Rights Reserved.