我试图将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}"
}
]
}
}
}
}
知道是什么原因吗
回溯显然是一个bug。请参阅Vimspector的contribution.md,了解如何报告可复制的测试用例
我怀疑问题在于它没有成功地启动调试适配器,然后无法连接到它,并将自己弄得一团糟
您可以使用:VimspectorReset“清除”混乱,但可能重启vim是在vimspector状态下清除混乱的唯一方法
至于它为什么无法连接,这还不太清楚。我们需要知道您到达那里的确切步骤,等等。最好在Gitter通道中寻求Vimspector的支持
请注意,在使用容器时,容器必须已经在运行。您将容器ID告诉vimspector,它只使用该ID执行
docker exec
。vimspector不是容器编排系统,它只能够为您运行ssh
和docker exec
命令,以帮助自动化调试过程的某些部分相关问题 更多 >
编程相关推荐