LoginSignup
16
24

More than 5 years have passed since last update.

VSCodeでPythonのリモートデバッグ

Posted at

はじめに

PyCharm ProfessionalのRemote Development機能は非常に便利だが、個人的にエディタとしては非常に使いにくい。これをVSCodeでやれる方法はないかと探したところ、実装予定はありそうだが未実装なので、リモートデバッグで我慢することにした。その際の設定に苦労したので備忘として残しておく。

やり方

  1. SSH FSを使ってワークスペースにリモートのディレクトリをマウントする
  2. リモートデバッグ時の設定でファイルのマッピングを、リモートディレクトリ→マウントしたディレクトリとする
  3. リモートでデバッグ対象のpythonスクリプトを実行する(デバッガの接続待機)
  4. VSCodeからリモートのデバッグ対象プロセスにアタッチする

SSH FSの使い方は、
Visual Studio CodeでSSHごしにファイルを編集する

リモートデバッグの基本は、
VSCodeでのPythonのデバッグと、Dockerコンテナ環境に接続してリモートデバッグする方法

を参照のこと

設定

設定したい内容は、
リモートディレクトリ
user_name@192.168.0.x:/home/user_name/projects/project_name
配下のコードをVSCodeで編集しながらデバッグする

SSH FSの設定

project_name.sshfs.jsonc
{
    "label": "project_name@ubuntu",
    "root": "/home/user_name/projects/project_name",
    "host": "192.168.0.x",
    "port": 22,
    "username": "user_name",
    "password": true
}

リモートデバッグの設定

launch.json
{
            "name": "Python Attach to project_name@ubuntu-ml",
            "type": "python",
            "request": "attach",
            "pathMappings": [
                {
                    "localRoot": "ssh://project_name",
                    "remoteRoot": "/home/user_name/projects/project_name"
                }
            ],
            "port": 3000,
            "host": "192.168.0.x"
        }

"pathMappings"の"localRoot"には、
Ctrl+Shift+PからOpen Workspace Configuration Fileで見られる、folders内、SSH FSのuriを指定する。

デバッグ用スニペット

リモートで実行時に、第一引数をdebugとするとデバッグ用にデバッガの接続を待機する。リンク先より拝借。

if __name__ == '__main__':
    if (len(sys.argv) > 1) and (sys.argv[1] == "debug"):
        import ptvsd
        print("waiting...")
        ptvsd.enable_attach(address=('0.0.0.0', 3000))
        ptvsd.wait_for_attach()
    main()

詰まったところ

Remote WorkspaceでSFTPを使う場合、"pathMappings"を認識させる方法が分からなかった。

・"pathMappings"は"/path/to/remote" : "/path/to/local"
と書いても認識してくれない

16
24
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
24