在本地计算机上:
-
在 vscode的工作空间中,创建用于远程调试的配置文件
launch.json
,设置端口和主机以及目录映射。{ "name": "Python: Attach", "type": "python", "request": "attach", "justMyCode": false, // let all python code could be debugged "connect": { "port": 5678, "host": "100.85.188.161", }, "pathMappings": [ { "localRoot": "${fileWorkspaceFolder}", // Maps C:\Users\user1\project1 "remoteRoot": "/usr/local/lib/python3.7/site-packages" // To current working directory ~/project1 } ] }
开始调试
-
两台计算机:确保调试涉及源代码完全相同。
-
两台计算机:使用
python -m pip install --upgrade debugpy
将debugpy安装到远程环境中,本地计算机由vscode安装到虚拟环境中。
-
远程计算机:有两种方法来指定如何连接到远程过程,推荐用第二种方法。
-
在源代码中,添加以下行,地址0.0.0.0和端口5678可以替换为远程计算机的 IP 地址和端口号。
import debugpy # Allow other computers to attach to debugpy at this IP address and port. debugpy.listen(('0.0.0.0', 5678)) # Pause the program until a remote debugger is attached debugpy.wait_for_client()
为了安全考虑,
listen
使用的 IP 地址应是远程计算机的私有 IP 地址。然后,您可以正常启动程序,使其暂停,直到调试器连接。 -
通过模块debugpy启动远程进程,比如:
python3 -m debugpy --listen 0.0.0.0:5678 --wait-for-client -m murano python3 -m debugpy --listen 0.0.0.0:5678 --wait-for-client murano/cmd/api.py
-
本地计算机:只有当您修改了上面概述的远程计算机上的源代码,然后在源代码中,添加在远程计算机上添加的相同代码的评论副本。添加这些行可确保两台计算机上的源代码逐行匹配。
#import debugpy # Allow other computers to attach to debugpy at this IP address and port. #debugpy.listen(('1.2.3.4', 5678)) # Pause the program until a remote debugger is attached #debugpy.wait_for_client()
-
本地计算机:切换到 VS 代码中的运行视图,选择Python:附加配置
-
本地计算机:在要开始调试的代码中设置一个断点。
-
本地计算机:使用修改后的Python启动 VS 代码调试器:附加配置和开始调试按钮。VS 代码应停止在本地设置的断点上,允许您跨过代码、检查变量并执行所有其他调试操作。您在调试控制台中输入的表达式也在远程计算机上运行。
文本输出到粗壮,从语句,显示在两台计算机上。但是,其他输出(如来自像 matplotlib 这样的包中的图形图则仅显示在远程计算机上。
print
-
在远程调试期间,调试工具栏显示如下:
在此工具栏上,断开按钮(Shift+F5)可停止调试器,并允许远程程序运行到完成。重新启动按钮(Ctrl+Shift+F5)会重新启动本地计算机上的调试器,但不会重新启动远程程序。只有在您已经重新启动远程程序并且需要重新连接调试器时,才使用重新启动按钮。