[VSCode] Pythonデバッグの挙動 - 2018.3.0 (28 Mar 2018)

突然デバッグの挙動が変わった

VSCode で Python のデバッグをしようとした時、デバッグコンソールではなくターミナルPython Debug Consoleが立ち上がってきた。デバッグ自体はいつも通りできるけど…なんだか気持ち悪い。

エラーメッセージ

デバッグを停止した時コンソールは自動的に閉じないので、連続でデバッグを繰り返しているとPython Debug Consoleがターミナルにどんどん開かれていく。この時新しいPython Debug Consoleを開いても、ブレークポイントが古いPython Debug Consoleに紐付けられたままだったりして、思い通りの挙動をしないことがしばしばあってあまりよろしくない感じだった。

  • 後になって分かったが、デバッグを開始した時新しいPython Debug Consoleが開かれる場合と、既存のコンソールを再利用する場合の両方の挙動が確認できた。デバッグを開始するタイミングなのだろうか?
  • ユーザー設定に"debug.internalConsoleOptions"や"debug.openDebug"というパラメータがあるが、これらを変更しても挙動の変化はなかった。"neverOpen"にしても問答無用で開くし…

PythonExtension のアップデートが原因

2018.3.0 (28 Mar 2018)

Enhancements

10 . When debugging, use Integrated Terminal as the default console. (#526)

3/28 のアップデートでデバッグのデフォルトコンソールがIntegrated Terminalに変更になっていた。
元のIssie#526を確認すると、既存のデバッグコンソールでは入力が必要なアプリのデバッグができないとのこと。
なるほど、確かに

元に戻す

とはいえ元のデバッグコンソールのほうがやりやすかったので戻してみる。launch.jsonを修正し、デバッグの構成で利用するコンソールを指定してあげればいい。

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

"console":"none"を追記することで、既存のデバッグコンソールでデバッグが動くようになる。
やったね!