A native Ruby debugger using the Debug Adapter Protocol.
This extension is still in early development. Please report bugs at https://github.com/castwide/vscode-ruby-debug.
- Standard breakpoints
- Conditional breakpoints (with readapt >= 0.7.0)
- Local and global variable data
- Next, step in, step out
- Pause while running
- Evaluate expressions in debug console
- Individual thread control
- Remote workspace support
Ruby Debug requires the readapt
gem. Install it from the command line:
gem install readapt
Or add it to your project's Gemfile:
gem 'readapt', group :development
Readapt requires Ruby >= 2.2.
If you're not familiar with VS Code's debugger, see the debugger documentation for more information.
- Open a Ruby project folder in VS Code.
- Go to the Debug view from the Activity bar.
- Click the Play button at the top of the Debug view (or use the
F5
keyboard shortcut). (If you don't have a launch configuration in the current workspace, the extension will debug the active file.)
Click the dropdown at the top of the Debug view and click "Add Configuration."
The simplest configuration is "Launch." It will start the debugger with a Ruby file in your workspace. The default behavior is to prompt the user for a file. You can set the program
option to a specific file instead; e.g., "program": "${workspaceFolder}/path/to/your/file.rb"
.
The debugger can also launch external Ruby executables. The debug configuration snippets include an example for debugging RSpec.
Launch configurations include a useBundler
option. If it's true
, the debugger will start with bundle exec readapt serve
before launching the program.
Note that readapt
must be included in your Gemfile for useBundler
to work.
The following snippets demonstrate some common launch configurations you can add to launch.json
.
{
"type": "ruby-debug",
"request": "launch",
"name": "Active File",
"program": "${file}",
"programArgs": [],
"useBundler": false
}
{
"type": "ruby-debug",
"request": "launch",
"name": "RSpec (Active File)",
"program": "rspec",
"programArgs": [
"-I",
"${workspaceFolder}",
"${file}"
],
"useBundler": false
}
{
"type": "ruby-debug",
"request": "launch",
"name": "Rails",
"program": "${workspaceFolder}/bin/rails",
"programArgs": ["s"],
"useBundler": true
}
Note: Make sure the readapt gem is included in your Gemfile, e.g.:
gem 'readapt', group: :development
- Multiple stack frames per thread
- Hit counts