連載
» 2021年07月30日 05時00分 公開

VS CodeでPythonコードのデバッグ構成をしてみようVisual Studio Codeで快適Pythonライフ(1/2 ページ)

VS Codeではlaunch.jsonファイルを使って、デバッグをどのような形で行うかの構成を行えます。その基本的な構成方法や構成可能な項目を紹介。

[かわさきしんじ,Deep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Visual Studio Codeで快適Pythonライフ」のインデックス

連載目次

デバッグ構成

 前回は[実行とデバッグ]ビューにある[実行とデバッグ]ボタンからデバッグを開始して、Visual Studio Code(以下、VS Code)が提供するデバッグツールバーの使い方や、[実行とデバッグ]ビューに表示される各種情報などを見ました。今回はデバッグ構成について見ていくことにします。

 「デバッグ構成」とは、デバッグをどのようにして行うかを指定することです。例えば、デバッグ用にプログラムを新規に起動するとか、最初に実行するファイルをどれにするかとか、デバッグの出力をVS Codeに統合されたターミナルへ送るか、外部のターミナルプログラムに送るかなどを指定します。

 これらの構成は「launch.json」という名前のファイルに保存されます。その保存先は、プロジェクトフォルダの直下にある.vscodeフォルダです。そして、このファイルを実際に作成するのが、前回にも見た[実行とデバッグ]ビューにある[launch.jsonファイルを作成します]リンクです。

[実行とデバッグ]ビューにある[launch.jsonファイルを作成します]リンク [実行とデバッグ]ビューにある[launch.jsonファイルを作成します]リンク

 このリンクをクリックすると、どんな種類のデバッグを行うかのドロップダウンが表示されます。

[launch.jsonファイルを作成します]リンクをクリックする
[launch.jsonファイルを作成します]リンクをクリックする
[Python File]を選択する
[Python File]を選択する

launch.jsonファイルの作成


 ここでは[Python File]を選択しましょう。これは前回も見た「現在エディタでアクティブになっているファイルを対象にデバッグを開始する」構成です。そのコードは次のようなものです(コメントは削除してあります)。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        }
    ]
}


launch.jsonファイル

 "configurations"属性の下には、複数の構成を記述することも可能です(後で実際に追加してみましょう)。ここでは構成は1つだけで、以下のような要素が指定されています。

  • "name"属性:デバッグ構成の名前。[実行とデバッグ]ビューのドロップダウンに表示される
  • "type"属性:使用するデバッガの種類。ここではPythonのコードをデバッグするので"python"となる
  • "request"属性:デバッグを開始するモード。特定のファイルを起動してデバッグを開始するのであれば"launch"を、既に動いているプログラムにデバッガをアタッチするなら"attach"を指定する。ここではデバッグ用にファイルを実行するので"launch"が指定されている
  • "program"属性:"request"属性の値が"launch"の場合に、デバッグ開始時に実行するファイルを指定する。ここで指定されている"${file}"は、エディタ領域で現在アクティブになっているファイルを意味する
  • "console"属性:プログラムの出力先の指定。パネル領域のデバッグコンソールか("internalConsole")、パネル領域のターミナルか("integratedTerminal"。デフォルト値)、外部のターミナルか("externalTerminal")を選択可能

 launch.jsonファイルが作成されると同時に、[実行とデバッグ]ビューの表示は次のように変わります。

[実行とデバッグ]ビューの表示が変わり、エディタ領域にはlaunch.jsonファイルの内容が表示されている [実行とデバッグ]ビューの表示が変わり、エディタ領域には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()

main.pyファイル

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]

mymath.pyファイル

 ここでは以下のようにmain関数呼び出しにブレークポイントを設定しました。

main関数呼び出しにブレークポイントを設定 main関数呼び出しにブレークポイントを設定

 今のところ、作成したデバッグ構成は1つだけなので、[実行とデバッグ]ビューのドロップダウンには[Python: Current File]が表示(選択)されているはずです。先ほども述べましたが、デフォルトの構成ではデバッグ開始時にエディタ領域でアクティブになっているファイルを起動するので、エディタ領域でmain.pyファイルがアクティブになっていることを確認した上で[デバッグの開始]ボタンをクリック(するか、[F5]キーを押すか)すると、デバッグが始まって、以下のようにmain関数を呼び出す直前でプログラムの実行が中断されます。

実行が中断されたところ 実行が中断されたところ

 この後はステップ実行を行いながら、変数の値などを確認していくわけですが、その基本については前回に見たので、ここではデバッグツールバーの[停止]ボタンをクリックするか、[Shift]+[F5]キーを押してデバッグを中止しましょう。

 次ページでは、デバッグ構成のカスタマイズについて簡単に見ていきましょう。

       1|2 次のページへ

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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