Posted at

VSCodeからDocker for Windowsのpythonにリモートデバッグ(ptvsd==4.1.3)


VSCodeからDocker for Windowsのpythonにリモートデバッグする


要約


  • ptvsd==3.0.0という記事は古い => 最新版でよい

  • ポート3000って意味ある? => デフォは5678

  • 一次情報にも触れましょう PyPI / git


VSCode準備


確認したバージョン


  • VSCode本体 1.28.0

  • VSCode拡張


    • Docker(peterjausovec.vscode-docker) 0.3.1

    • Python(ms-python.python) 2018.9.0




デバッグ実行するコード



  • ptvsd.enable_attach()にしてます、ほかの設定に合わせてパラメータでポートいじれます


    • 定義はenable_attach(address=(DEFAULT_HOST, DEFAULT_PORT), redirect_output=True)

    • およびDEFAULT_HOST = '0.0.0.0'

    • そしてDEFAULT_PORT = 5678




sample.py

import ptvsd

ptvsd.enable_attach()
ptvsd.wait_for_attach()
ptvsd.break_into_debugger()

file = open('/etc/os-release')
content = file.read()
print(content)
file.close()



デバッグ実行準備


launch.json

    {

"name": "Python: Attach",
"type": "python",
"request": "attach",
"port": 5678,
"host": "localhost",
"localRoot": "${workspaceFolder}",
"remoteRoot": "/app"
},


Docker準備


ファイルツリー

workspace

│ .dockerignore
│ docker-compose.yml
│ Dockerfile
│ requirements.txt
│ sample.py

└─.vscode
launch.json


  • ポート5678開放


Dockerfile

FROM python:3.6.6-slim-stretch

LABEL Name=pyremotedebug Version=0.0.1
EXPOSE 5678
WORKDIR /app
ADD . /app
RUN python -m pip install -r requirements.txt


  • ptvsdは4.1.3


requirements.txt

ptvsd==4.1.3



  • よその記事みたいにポート3000でもいいけど、衝突しなければ何でもいいです


docker-compose.yml

version: '2.1'

services:
pyremotedebug:
image: pyremotedebug
build: .
ports:
- 5678:5678
volumes:
- .:/app
command: >
python
/app/sample.py



  • (一度だけ)dockerイメージつくる


    • docker-compose build




デバッグ実行



  • コンテナ起動しつつ



    • docker-compose up -d


      • 二度目以降はVSCode的には、Dockerのアイコン=>DOCKER EXPLORER=>Containers=>目当てのコンテナを右クリ=>Restart Containerでしょうか

      • 統合ターミナルで上+Enterの方が楽か






  • 環境Python: Attachでデバッグ実行する


    • sample.pyのLine6 file = open('/etc/os-release') で止まるはず



以上