Visual Studio CodeでPythonデバッグ実行

提供: Eospedia
移動: 案内検索

デバッグ設定ファイル launch.json

launch.jsonで使える定義済み変数

https://code.visualstudio.com/docs/editor/variables-reference

デバッガに環境変数を渡す

参考: VSCode 用のlaunch.jsonでデバッグコマンドに環境変数 / 引数 / フラグを渡す設定

launch.jsonに環境変数を記述すればよい。

例:PythonのモジュールサーチパスPYTHONPATHを追加する

{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: モジュール",
            "type": "python",
            "request": "launch",
            "module": "instamatic"
        },
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "env": {
                "PYTHONPATH": "${workspaceFolder}"
            }
        }
    ]
}
  • Windowsの場合
    • ディレクトリのセパレータはバックスラッシュだが、あとに続く文字によっては特殊文字と見なされてしまうので、バックスラッシュは二重にして書く。
    • パスを続けて2つ以上書く場合、例えば次のようにする。
            "env": {
                "PYTHONPATH": "${workspaceFolder};C:\\Users\\hogeta\\hoge\\fuga"
            }

モジュールのデバッグ

スクリプトではなくモジュール(インポートで呼び出される側のコード)をデバッグする場合は、モジュールとしてデバッグする。

例:ワークスペースフォルダに置いてあるinstamatic.server.tem_serverというモジュール (ファイルとしては${workspaceFolder}/instamatic/server/tem_server.py)をデバッグしたいとき

{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: debug tem_server module",
            "type": "python",
            "request": "launch",
      "cwd": "${workspaceFolder}",
            "module": "instamatic.server.tem_server"
        }
    ]
}

標準ライブラリや外部ライブラリの中までステップインする

デバッグの設定ファイルであるlaunch.jsonにて、justMyCodeオプションをFalseとすればよい、とのこと

参考: https://srbrnote.work/archives/4231

デバッガ使い方

現在のデバッグ行に飛ぶ

コールスタックペインに表示されている一番上の項目をクリックすれば、現在デバッグしている行(正確にはこれから実行する行)に飛べる。デバッグ中にファイルをいろいろ移動して迷子になってしまったときに、デバッグ行に戻れる。

参考: https://stackoverflow.com/a/56270324