为什么VSCode ruby调试器在127.0.0.1上显示多个活动连接 p1234

dluptydi  于 12个月前  发布在  Ruby
关注(0)|答案(2)|浏览(85)

我无法在VSCode中调试Ruby程序给出错误

ECONNREFUSED ::1:1234

在调试控制台,我相信这是相同的错误时,开始调试会话没有结束的第一个。通常,重新启动/重新启动可以解决问题。在我的情况下,我已经重新启动多次,并关闭一次电源,也遵循了几个网站上关于重置网络的帖子-没有帮助。
在关闭电源后和运行vscode之前(没有其他东西先运行),做了一个netstat -a,它没有显示127.0.0.1:1234的活动。
运行vscode和命令后,显示一个活动连接。

TCP    127.0.0.1:1234         XPS:0                  LISTENING

netstat -a在vscode终止后仍然报告相同的井。注意:netstat -b显示该端口上没有活动。
我采取的最后一步是重新安装vscode,并禁用除Ruby,VSCode rdgb,VSCode ruby之外的所有扩展。结果是

Fatal exception in DebugThread loop: Only one usage of each socket address (protocol/network address/port) is normally permitted. - bind(2) for "127.0.0.1" port 1234

执行中的程序是

puts  "starting"; exit

launch.json

{
            "name": "MAIN",
            "type": "Ruby",
            "request": "launch",
            "cwd": "${workspaceRoot}",
            "program": "${workspaceRoot}/main.rb"
        },

调试其他程序(未触及和以前没有问题)产生相同的结果,但运行完成时,不处于调试模式。
我有一个类似的问题,大约2年前,经过几天的尝试多种东西,问题根本消失了,我无法确定为什么它被纠正。
在问题出现之前,只有其他远程相关的事情是运行bundler install,同时查看一篇关于使用Gemfile控制更新的文章。

mtb9vblg

mtb9vblg1#

在写这个问题时,我查看了sysinternals,发现tcpview显示了以下内容

ruby.exe,18668,TCP,Listen,127.0.0.1,1234,0.0.0.0,0,9/16/2023 12:33:37 PM,ruby.exe,,,,

我使用tcpview杀死进程(注意主VSCODE窗口没有关闭),重新运行vscode,它给了我

C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/ruby-debug-ide-0.7.3/lib/ruby-debug-ide.rb:106: warning: undefining the allocator of T_DATA class Debase::Context

不确定是什么错误,但与此问题无关。
程序在调试模式下多次运行完成,因此看起来像是问题的临时解决方案。
注:使用tcpview终止进程后,netstat -a不再报告127.0.1端口1234上的活动
注意:当意外运行第二个调试过程而没有首先终止时,看起来是一个很好的解决方案。尝试通过启动新的调试会话并多次停止在断点来证明这一点。在任何时候我都没有得到多个连接错误。似乎可以解决问题。

p3rjfoxz

p3rjfoxz2#

我使用扩展Ruby v0.28.1,VS Code插件连接Ruby LSP,Ruby Solargraph v0.24.0,Ruby的rdbg调试器支持VSCode,VSCode Ruby v0.28.0和ruby gems debug(1.8.0,1.6.3)和ruby-debug-ide。
对问题有了进一步的了解,当运行调试失败时,连接到127.0.0.1,1234但没有出现调试工具栏,程序也没有执行。连接永远不会被释放。下一次尝试给出双127.0.0.1,1234连接问题。连接永远不会释放,直到我在tcpview中这样做。
注意:在问题开始发生的同时,我开始在每次调试运行时收到警告消息,所以我不知何故搞砸了我的调试环境。因此,将不再仔细阅读这个问题,因为已经阅读了Ruby 3.2和VSCode。安装Ruby 3.1和VSCode。我现在的launch.json安装文件确实有问题,我会把它作为一个新问题来问。
感谢您的意见。问题已关闭

相关问题