【Python】VisualStudioCode で外部ライブラリをデバッグするには “debugStdLib”: true を設定する【launch.json】

決算分析システム

Visual Studio Code で Python プログラムを開発しているときに、デバッグで標準ライブラリや外部ライブラリの中に入る方法です。

フォルダ『.vscode』の中にある『launch.json』に、"debugStdLib": true を追加します。

(追記)2019年10月以降に、設定方法が変わりました。"debugStdLib": true の代わりに、『"justMyCode"ジャスト マイ コード: false』を使用します。

これで、標準ライブラリや外部ライブラリの中にステップイン (step in, step into) することができました。

また、ライブラリの中にブレークポイントを設定すると、ライブラリの中で止まるようになりました。

debugStdLib の設定をしたことで、『pip でインストールしたライブラリの中』にステップインしたり、ブレークポイントを設定して中断したりできるようになりました。

debugStdLib の意味

Visual Studio Code で debugStdLib にマウスカーソルを当てたら、説明が出てきました。

debugStdLib: Debug standard library code.
デバッグ スタンダード ライブラリー コード。
意味:標準ライブラリのコードをデバッグする。

以前は debugOptions の中に DebugStdLib を書いて設定していた

ところで、以前は "debugOptions": ["DebugStdLib"] のように、デバックオプションの下に DebugStdLib を書いて設定していました。

いつからか分かりませんが、変更になったみたいです。

デバックオプションが廃止されて、debugStdLib を true/false で設定するように変わっていました。

そしてさらに、また変更するみたいです。

DebugStdLib をやめて justMyCode に変更するらしい

『デバッガにジャストマイコード justMyCode という機能を実装する』という記事と、『debugStdLib を justMyCode で置きかえる』という記事を見ました。

Implement `justMyCode` fine grained control feature in debugger · Issue #159 · microsoft/debugpy · GitHub
https://github.com/microsoft/debugpy/issues/159

Replace setting debugStdLib with `justMyCode` · Issue #4032 · microsoft/vscode-python · GitHub
https://github.com/Microsoft/vscode-python/issues/4032

自分の理解では、今後は "debugStdLib": true の代わりに "justMyCode": false を使うと、ライブラリの中をデバッグできるようになるみたいでした。

Visual Studio Code のマニュアルにも、ジャストマイコード justMyCode の説明がありました。

Debugging configurations for Python apps in Visual Studio Code
https://code.visualstudio.com/docs/python/debugging#_justmycode

しかしながら、2019年9月の時点では、自分の環境で "justMyCode": false を設定してみても効果が無かったです。

以下のような表示が出て、デバッグ実行してみても、ライブラリの中にステップインしたり、ブレークポイントで止めたりすることはできなかったです。

Property justMyCode is not allowed.
問題を表示 No quick fixes available
“justMyCode”: false,

まだ、完全にはリリースしていないのか、それとも自分の設定が正しくないのか。

ちょっと分からなかったです。

とりあえず、今は "debugStdLib": true でデバッグしています。

デバッグ実行で標準ライブラリや pip でインストールした外部ライブラリの中を見たら勉強がはかどった話

ソースコードは『定義に移動 F12』でパッと見れますが、変数の状態までは分からないです。

そこで、デバッガの設定変更です。

launch.json に "debugStdLib": true を設定する。

これで、ライブラリの中にブレークポイントを設定すると、そこでの変数がチェックできました。

処理の流れはもちろんですが、Python ロガーの使い方とか、Python クラスの作り方とか、テクニックとか、とても分かりやすく追うことができました。

やっぱり、実際に動かしながら見ると分かりやすかったです。

あと、ライブラリで意図しない動作とか直感的でない動作があったときに、その原因・理由を調べることにも役立っています。

普段は、ライブラリの中までステップインされてしまうと困るので、設定はOFFにしています。

"debugStdLib": false (ライブラリの中のデバッグはしない)

スポンサーリンク
シェアする(押すとSNS投稿用の『編集ページ』に移動します)
フォローする(RSSフィードに移動します)
スポンサーリンク
シラベルノート
タイトルとURLをコピーしました