vscode本地docker gdb调试python
背景
最近在部署测试一个工程,不想配环境,拉官方镜像下来跑的,不幸地是,程序运行有点问题。想要debug一下,又不想在终端gdb,想要在vscode中点点点,所以有了下面的一顿配置。
vscode python常用插件
利用docker & Remote Development插件
参考链接中“用vscode来查看并attach运行中的容器——方法二:使用docker插件“部分
注意:不安装Remote Development插件,没有attach visual studio code选项(参考链接)
利用Dev Containers插件
参考链接中“用vscode来查看并attach运行中的容器——方法一:使用remote-container插件“部分,我没有在插件中搜索到remote-container,安装的Dev Containers插件,发现也是ok的。
利用Remote SSH插件
参考链接:在Docker容器中启用SSH服务,实现外部访问的详细教程
配置docker: ssh & gdb
ssh:
apt-get update
apt-get install -y openssh-servervim /etc/ssh/sshd_config
Port 8080(默认情况下,ssh服务监听22号端口,此处也可以配置其他的)
PermitRootLogin yes
PasswordAuthentication yesuseradd -m -d /home/<username> -s /bin/bash -p 密码service ssh restart
查看状态 service ssh status
如果没有成功运行:
端口问题:
apt install net-tools
查看22端口被谁监听:netstat -tulnp | grep 22
查看ssh服务监听哪个端口:netstat -tulnp | grep ssh
直接运行:/usr/sbin/sshd 查看输出报错docker run -p <host_port>:<container_port> -d <your_image> ...... bashssh -p <host_port> <username>@<host_ip_or_localhost>
例如:ssh -p 8080 star@localhost
whoami
passwdgdb:
sudo apt install gdb
# 测试
gdb --versiondocker commit 容器name 镜像名
利用remote-ssh远程调试
该步比较简单,可参考remote-ssh配置与使用
需要说明的一点是可以在~/.ssh/config中配置端口号Port
其他问题
VSCode如何在行内显示变量值
python debug的时候报环境版本太低,不能debug的错误:
(1)参考VSCode运行Python3.6.5项目 无法debug调试的解决办法
(2)我修改python成非pre-release版本之后,还是会报错,但是可以正常debug了,有点难以解释。
ai助手:lingma Copilot等