VSCode使って、リモートサーバ上で動作するスクリプトに対してRemote Debugを実施する手順。
過去に ptvsd のバージョン依存などでハマったのでメモも兼ねて。
事前準備
Pythonライブラリ
ptvsd をインストールすればよいが、バージョン 3.0.0 でないと、VSCode上でうまく動作しない様子。( このissue を参照 )
pip install ptvsd==3.0.0 のように、明示的にバージョンを指定してインストールしておく。
VSCodeのTask設定
ワークスペースの launch.json に、以下のようなエントリを追加しておく。
{
"name": "Python: Attach",
"type": "python",
"request": "attach",
"localRoot": "${workspaceFolder}",
"remoteRoot": "/path/to/remote/workspace",
"port": 3000,
"secret": "xxx",
"host": "xxx.xxx.xxx"
},
実行対象のスクリプト
スクリプトの先頭に以下の文を仕込む。
リモートサーバ上でスクリプトを実行すると、ptvsd.wait_for_attach() の行でデバッガの接続を待機するようになる。
import ptvsd
ptvsd.enable_attach(secret='hoge', address=('0.0.0.0', 3000))
ptvsd.wait_for_attach()
デバッグの実行
Ctrl + Shift + D 又はサイドバーからデバッグ画面を開き、プルダウンメニューから launch.json で設定した構成名を選択する。
F5キーまたはデバッグ開始ボタンを押すと、launch.json で指定した接続先の待機中プロセスにattachされる。
あとは、ローカル実行時と同様に操作が可能。
