返回

VScode 中使用 Debugpy 调试远程 Python 服务器:从配置警告到成功迁移

python

使用 VScode 中的 debugpy 调试远程 Python 服务器

问题:调试配置弃用警告

在 VScode 中使用 debugpy 调试远程 Python 服务器时,可能会出现以下警告:

此配置即将弃用。请将 “python” 替换为 “debugpy” 以使用新的 Python 调试器扩展。

解决方案:迁移到 debugpy 配置

为了解决此问题,需要将 launch.json 文件中的调试配置从 "type": "python" 更新为 "type": "debugpy"

1. 迁移原始配置

原始配置如下:

{
      "type": "python",
      "request": "attach",
      "name": "attach remote",
      "host": "192.168.1.101",
      "port": 8765,
      "pathMappings": [
        {
          "localRoot": "${workspaceFolder}/...",
          "remoteRoot": "/usr/app/..."
        }
      ],
      "justMyCode": false
    }

"type": "python" 替换为 "type": "debugpy"

2. 添加连接信息

在 debugpy 配置中,需要添加远程服务器的连接信息,包括主机(host)和端口(port)。

更新后的配置如下:

{
      "type": "debugpy",
      "request": "attach",
      "name": "attach remote",
      "host": "192.168.1.101",
      "port": 8765,
      "pathMappings": [
        {
          "localRoot": "${workspaceFolder}/...",
          "remoteRoot": "/usr/app/..."
        }
      ],
      "justMyCode": false
    }

3. 解决错误:Property port is not allowed

转换到 debugpy 后,可能会遇到以下错误:

Property port is not allowed.

这是因为 debugpy 配置中不再支持 port 字段。需要使用 serverOptions 字段指定连接信息。

修改后的配置如下:

{
      "type": "debugpy",
      "request": "attach",
      "name": "attach remote",
      "serverOptions": {
        "host": "192.168.1.101",
        "port": 8765
      },
      "pathMappings": [
        {
          "localRoot": "${workspaceFolder}/...",
          "remoteRoot": "/usr/app/..."
        }
      ],
      "justMyCode": false
    }

注意事项

  • 确保已安装 debugpy Python 包。
  • 如果远程服务器使用非标准端口,则需要在防火墙中打开该端口。
  • 根据需要调整路径映射以匹配本地和远程文件系统。

通过遵循这些步骤,应该能够使用 VScode 中的 debugpy 成功调试远程 Python 服务器。

常见问题解答

  1. 为什么需要使用 debugpy 进行远程调试?
    debugpy 是用于 Python 的高级调试器,它提供比内置 Python 调试器更强大的功能和灵活性。

  2. 如何确保远程服务器已连接?
    使用 telnet <host> <port> 命令测试连接。如果服务器响应,则说明已连接。

  3. 为什么我的调试会话失败?
    检查连接信息是否正确,并且防火墙中已打开正确的端口。

  4. 如何排除 debugpy 问题?
    启用 debugpy 日志记录并检查日志以查找错误消息。

  5. 我可以使用 debugpy 调试其他语言的服务器吗?
    debugpy 仅用于 Python 服务器调试。