如何配置 VS Code 以调试 vagrant 容器中的代码?

How do I configure VS Code to debug code in a vagrant container?

我正在开发一个新的 python/pyramid Web 应用程序,但我在设置 VS Code 以调试 vagrant 容器中的 python 代码时遇到了困难。显然,使用 pycharm 是可能的,但我更愿意使用 VS Code。远程调试文档并没有太大帮助。如果有人有经验或指导如何做到这一点,我将不胜感激。

我的环境

Windows 10,我是 运行 Ubuntu 16.04,在 Virtualbox 中使用 Vagrant。在我执行 vagrant up 启动 Virtualbox/Ubuntu 之后,Vagrant 提供的消息中有 SSH 用户名和 SSH 地址(在我的例子中分别为 vagrant127.0.0.1:2222)。确保你有一个 SSH client 而不是 putty 设置(我有 Openssh - 它在 Windows 商店中可用,通常安装在 C:\Windows\System32\OpenSSH\ssh。 exe).

首先,将 远程开发 扩展安装到 VS Code 中。然后按 F1,键入 remote 调出远程开发选项,然后选择 Remote-SSH: Connect to Host...

一个问题

Vagrant 默认将端口 22 转发到 2222,这似乎是 VS Code 的问题。我可以通过 git-bash 和 Windows 命令行(使用 Openssh)通过 SSH 用户名和地址(上面)通过键入 ssh vagrant@127.0.0.1 -p 2222(注意 ssh vagrant@127.0.0.1:2222 将不起作用)。但是,如果您在 VS Code 中键入此内容以连接到主机,它将无法工作 - 当使用 -p.

指定端口时,它不会连接

解决方案

如果您将 Virtualbox 与 Vagrant 一起使用,请打开 VirtualBox GUI 并打开 运行 VM 的设置。单击网络项,然后单击适当的适配器。单击高级,然后单击端口转发按钮。将 2222 更改为 22(即您只是将端口 22 转发到 22 - 您可以使用 config.vm.network "forwarded_port", guest: 22, host: 22 在 Vagrantfile 中永久更改此更改)然后退出设置。

现在连接...

更改端口转发以便 Virtualbox 侦听默认 SSH 端口 22 后,您只需 ssh vagrant@127.0.0.1.

即可从 VS Code 连接

还有一件事...

在 VS Code 中按 F1,输入 remote 并选择 Remote-SSH: Settings。在远程设置的底部,打开显示登录终端。 (您将在此处键入密码以完成 SSH 登录 [默认密码为 vagrant])。我还没有为基于密钥的登录设置东西。也许我会在更新时更新这个答案。

后记

目前看来 remote debugging 的设置仍然很复杂。