无法为远程调试Docker容器启动vimspector

2024-07-04 08:16:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将vimspector配置为远程调试在Docker容器中运行的Python Django应用程序,启动调试器时出现以下错误:

Channel is already running
Error detected while processing function vimspector#Continue[4]..function vimspector#Continue:
line    4:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "~/.vim/pack/vimspector/opt/vimspector/python3/vimspector/debug_session.py", line 473, in Continue
    self.Start()
  File "~/.vim/pack/vimspector/opt/vimspector/python3/vimspector/debug_session.py", line 277, in Start
    self._StartWithConfiguration( configuration, adapter )
  File "~/.vim/pack/vimspector/opt/vimspector/python3/vimspector/debug_session.py", line 322, in _StartWithConfiguration
    start()
  File "~/.vim/pack/vimspector/opt/vimspector/python3/vimspector/debug_session.py", line 295, in start
    self._Initialise()
  File "~/.vim/pack/vimspector/opt/vimspector/python3/vimspector/debug_session.py", line 972, in _Initialise
    self._connection.DoRequest( handle_initialize_response, {
AttributeError: 'NoneType' object has no attribute 'DoRequest'

下面是我的.vimspector.json配置文件(主要受vimspector文档中this example的启发):

{
  "adapters": {
    "python-remote": {
      "port": "${port}",
      "launch": {
        "remote": {
          "container": "${container}",
          "launchCommmand": [
            "python", "-m", "debugpy", "--listen", "0.0.0.0:${port}",
            "%CMD"
          ]
        }
      },
      "attach": {
        "remote": {
          "container": "${container}",
          "pidCommand": [
            "sh", "-c", "pgrep", "-f", "${filename}"
          ],
          "attachCommand": [
            "sh", "-c", "python", "-m", "debugpy", "--listen", "0.0.0.0:${port}",
            "--pid", "%PID%"
          ]
        }
      }
    }
  },
  "configurations": {
    "remote-launch": {
      "adapter": "python-remote",
      "remote-request": "launch",
      "remote-cmdLine": [
        "${RemoteRoot}/${fileBasename}", "*${args}"
      ],
      "configuration": {
        "request": "attach",
        "pathMappings": [
          {
            "localRoot": "${workspaceRoot}",
            "remoteRoot": "${RemoteRoot}"
          }
        ]
      }
    },
    "remote-attach": {
      "adapter": "python-remote",
      "remote-request": "attach",

      "configuration": {
        "request": "attach",
        "pathMappings": [
          {
            "localRoot": "${workspaceRoot}",
            "remoteRoot": "${RemoteRoot}"
          }
        ]
      }
    }
  }
}

知道是什么原因吗


Tags: inpydebugselfremoteportsessionline
1条回答
网友
1楼 · 发布于 2024-07-04 08:16:16

回溯显然是一个bug。请参阅Vimspector的contribution.md,了解如何报告可复制的测试用例

我怀疑问题在于它没有成功地启动调试适配器,然后无法连接到它,并将自己弄得一团糟

您可以使用:VimspectorReset“清除”混乱,但可能重启vim是在vimspector状态下清除混乱的唯一方法

至于它为什么无法连接,这还不太清楚。我们需要知道您到达那里的确切步骤,等等。最好在Gitter通道中寻求Vimspector的支持

请注意,在使用容器时,容器必须已经在运行。您将容器ID告诉vimspector,它只使用该ID执行docker exec。vimspector不是容器编排系统,它只能够为您运行sshdocker exec命令,以帮助自动化调试过程的某些部分

相关问题 更多 >

    热门问题