Iamはリモートデバッグをしようとしていますpython VSCで:
それはmain.pyファイルです:
print('Hello, World')
debug.py:
import ptvsd
ptvsd.enable_attach('my_secret', address=('0.0.0.0', 7102))
ptvsd.wait_for_attach()
Dockerfile:
FROM python:3.6-slim
EXPOSE 7102
RUN pip install ptvsd
WORKDIR /app
COPY . .
CMD ["python", "debug.py"]
そしてそれはlaunch.jsonファイルです:
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach (Remote Debug)",
"type": "python",
"request": "attach",
"localRoot": "${workspaceRoot}",
"remoteRoot": "/app",
"port": 7102,
"secret": "my_secret",
"Host": "172.17.0.3"
}
]
}
コンテナーをビルドして開始するコマンドです。
docker build -t python-for-debug。
docker run -it -p 7102:7102 python-for-debug
デバッガーを実行すると、次のようになります。 vsコードの画面
デバッグコンソールにエラーはなく、出力も問題もありません。実行中のコンテナの出力はありません。 Dockerログなし
VSコードバージョン:1.15.0 Dockerバージョン17.06.0-ce、ビルド02c1d87
こんにちは、ptvsd 3を使用する必要があるため、DockerfileのRUN行を次のように変更します。
RUN pip3 install ptvsd==3.0.0
ローカルでptvsdインストールも実行します。
$pip3 install ptvsd==3.0.0
詳細については https://code.visualstudio.com/docs/python/debugging#_remote-debugging を参照してください。これでうまくいきました。
8月12日を編集
何が問題かを確認するために、テストバージョンをセットアップしました。問題は、Visual Studio Codeが接続する前に失敗したデバッガーに接続しないことです。
例外はJSコードにあります。
Githubにも未解決の問題があります
https://github.com/DonJayamanne/pythonVSCode/issues/805
あなたの最善の策は、問題にこれらの詳細を追加するか、新しいものを開くことです
元の回答:
あなたが見ている行動は実際には正しいです。私はあなたのスクリーンショットを見ました、そしてあなたはあなたのクライアントスクリプトに「Hello World」を印刷しました、そして以下のコードはあなたのリモートにあります
import ptvsd
ptvsd.enable_attach('my_secret', address=('0.0.0.0', 7102))
ptvsd.wait_for_attach()
以下のURLが表示された場合
https://donjayamanne.github.io/pythonVSCodeDocs/docs/debugging_remote-debugging/
以下の見積もりを読む
両方のスクリプトファイル(つまり、ローカルマシンとリモートマシンの両方のスクリプト)に上記の変更を加えます。ただし、クライアント側では、上記の2行がコメント化されていることを確認してください。これは、サーバーに同じ行番号があり、それらが一致することを確認するために必要です。
コードデバッグの実行はすべてコンテナ内で行われます。ローカルマシンのコードは、コンテナー内のコードがどの行であるかを視覚化できるようになりますが
問題は、Dockerプロセスが終了することだと思います。
Dockerfileでコマンドとしてdebug.pyを開始します。したがって、Dockerはタスクを開始し、デバッガーがアタッチするのを待ってから、何もする必要がないため終了します。
最も簡単な方法として、コードをdebug.pyに配置する必要があるようです。また、直後にブレークポイントを置くことはできません。
ptvsd.wait_for_attach()
そのため、間に予備の行をいくつか作成することをお勧めします。
お役に立てれば。