VS Code で Python をデバッグ2021年09月08日 11時32分07秒

VS Code を使っての Python のデバッグが随分良かった。UI を通してのブレイクポイントの設定も楽だし、クラスメンバ変数やローカル変数も見やすい。print() デバッグだと、見たい値を随時追加する必要があるが、デバッガだとそれも必要無い。ただ、初めて設定するのは分かりづらかった。

まずは、VS Code の Pylance か Python モジュールをインストール。Microsoft が提供している。その後デバッガの設定。「Run」メニューから、「Add Configuration」か「Open Configurations」で設定ファイルを開く。

設定ファイルには幾つかの方法があるようだが、program に pytest のパスを入れて使うのが愚直で簡単だと思う。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Pytest",
            "type": "python",
            "request": "launch",
            "program": "/usr/local/bin/pytest",
            "console": "integratedTerminal",
            "args":["tests/test_functionality.py"],
            "justMyCode":false
        }
    ]
}
「name」 はこのテストの名前。複数の設定を入れられるので名前を付ける。「type」は python。「request」と「console」は自動で入れられた。「program」 には pytest のパスを設定し、「args」で特定のテストだけを走らせるように複数作っている。他にも、py ファイルを直接「program」に入れてもデバッガは動いた。

「justMyCode」は大切。これは初期値が true。その為、手元の python ファイルしか、ステップイン出来ない。これを false にすると、ライブラリなどにもブレイクポイントを設定できたり、ステップインできるなるので、ほぼ必須。

Docker コンテナを使っている場合は、設定ファイルに python モジュールをインストールするように設定するか、手動でインストールする必要がある。docker build でインストールされたモジュールが無くなってしまうので、設定するのが吉。

「Run」メニューの「Start Debugging」を使うか F5 を押すとデバッガを起動できる。UI の左側にもデバッグ用のボタンがあるので、それを使っても良い。