注意 (2020.04.14追記): この記事の内容はすでに古いものとなっています.
現在はより簡単にリモートでバッグを設定できるようになっているのでこちらをご覧ください.
以下の方法を用いてubuntuでは構築することは出来ましたが,windowsでは環境構築出来ませんでした.(pathの大文字小文字が勝手に変換されてしまう問題を解決出来なかったため)
リモートデバッグとは
ローカル環境からサーバ上などのリモートの環境で動くコードのデバッグを行うこと
使ったツール
手順
1. インストール
SSH FS
VSCodeのExtensionからSSH FSを検索してインストール
ptvsd
リモートのローカルの両方にpip install ptvsd
でptvsdをインストール
2. 環境の設定
Pythonコードの編集
main文の文頭に以下を追記する.実行の際にdebug
を引数とすることで,ptvsdを用いたデバッグモードに移るようになる.
if __name__ == '__main__':
import sys
if (len(sys.argv) > 1) and (sys.argv[1] == "debug"):
import ptvsd
print("waiting...")
ptvsd.enable_attach(address=('0.0.0.0', 5678))
ptvsd.wait_for_attach()
SSH FSの設定
「Visual Studio CodeでSSHごしにファイルを編集する」を参考に設定してください.
VSCodeのデバッガの設定
launch.jsonに以下の記述を追加する.
{
"name": "Python: Remote Attach",
"type": "python",
"request": "attach",
"port": 5678,
"host": "0.0.0.0",
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "."
}
]
},
3. 実行方法
- サーバー上で
python example.py debug
とうち,リモートデバッグの待機状態にする.waiting...
と表示される. - VSCodeから
Python: Remote Attach
のdebuggerを選択する. - 適宜ブレイクポイントを設定する.
- debugの実行.
詰まったところ
問題
sshポートフォワーディングの設定をしていなかったため,諸設定を行ってもVSCodeとサーバーの環境の接続が確立されていませんでした.
対処
=> ssh -L 5678:localhost:5678 USER@192.168.1.XX
でUSER@192.168.1.XX
にログインすることで,localの5678
にアクセスするとremoteからアクセスできるlocalhost:5678
に繋げるように設定する.USER@192.168.1.XX
,5678
は適宜設定しても問題ありません.
参考
sshポートフォワーディング - Qiita
Visual Studio CodeでSSHごしにファイルを編集する - Qiita
VSCodeでPythonのリモートデバッグ - Qiita