bugpy实现了下面的红色框中的部分
debugpy里面的Adapter负责和vscode这个调试客户端通信,debugpy的另外一部分是内嵌了一个pydevd库,这个pydevd库负责加载被调试的程序,给被调试的程序添加断点,运行一行代码后停在下一行代码,告知调试客户端当前调试到哪一行了……,只是pydevd的数据格式不是DAP协议的格式,Adapter相当于把它原本的格式转换成DAP协议的格式了。(pycharm调试程序用的就是pydevd库)
image
准备工作:
Windows电脑安装vscode,安装python相关插件
image
Linux主机,pip安装debugpy库
vscode打开被调试的python程序,Linux主机上也要存放相同的python程序
远程调试方式1
image
launch.json这样配置
image
image
image
最后生成的调试配置长这样,host,port是远程主机的ip,端口
image
在远程的Linux主机上面启动被调试的程序
image
选择前面设置的deubg配置,设置断点后,就可以调试了
image
可以看到vscode成功连接到远端的Adapter
image
远端的Linux主机,被调试的程序也有相应的输出内容
image
远程调试方式2
有时候,vscode所在的主机不能连接到远程的主机,比如远端是个容器,而且又没有暴露端口出来,但是远端的容器可以连接 vscode所在的主机,就可以用这种反向连接的办法
launch.json改成这样
image
先在vscode上面启动调试,vscode会等待adapter连接进来
image
Linux主机上面把--listen 改成--connect, ip改成vscode所在的主机ip
image
adapter连接到vscode所在主机后,继续运行,单步运行按钮就可用了
image