如何配置VS Code Rails调试器,使其在本地虚拟机启动Rails时生效?
问题根因
你当前launch.json配置的type: Ruby会让VS Code的Ruby调试扩展直接把program指定的文件作为Ruby代码解析执行,你传入的是shell脚本,ssh命令不符合Ruby语法,自然会触发语法报错。
正确配置步骤
1. 虚拟机端前置配置
- 首先给虚拟机内的Rails项目安装调试依赖,在Gemfile的development分组添加对应版本适配Rails4的包:
group :development do gem 'ruby-debug-ide', '~> 0.7.3' gem 'debase', '~> 0.2.5.beta2' end
进入虚拟机项目目录执行bundle install完成安装。
- 修改Vagrantfile添加调试端口转发,重启Vagrant生效:
config.vm.network "forwarded_port", guest: 1234, host: 1234
- 修改虚拟机内的
Procfile.debug,把Rails启动命令替换为调试模式启动:
web: rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 26162 -- bin/rails s -b 0.0.0.0 -p 3000
2. 本地VS Code配置调整
将launch.json改为远程附加模式,不要直接用launch模式执行shell脚本:
{ "configurations": [ { "name": "Attach to Vagrant Rails", "type": "Ruby", "request": "attach", "remoteHost": "127.0.0.1", "remotePort": 1234, "remoteWorkspaceRoot": "/vagrant/rails_project", // 替换为虚拟机内Rails项目的绝对路径 "localWorkspaceRoot": "${workspaceFolder}" } ] }
3. 启动调试流程
- 先在本地终端执行你写的
start_web.sh脚本,等待虚拟机内调试服务启动,出现日志Fast Debugger (ruby-debug-ide xxx) listens on 0.0.0.0:1234即为启动成功 - 打开VS Code运行调试面板,选择「Attach to Vagrant Rails」点击启动,即可正常打断点调试。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

