VS Code debugging
This document describes how to set up Rails debugging in Visual Studio Code (VS Code) using the GitLab Development Kit (GDK).
Setup
The examples below contain launch configurations for rails-web
and rails-background-jobs
.
-
Install the
debug
gem by runninggem install debug
inside yourgitlab
folder. -
Install the VS Code Ruby
rdbg
Debugger extension to add support for therdbg
debugger type to VS Code. -
In case you want to automatically stop and start GitLab and its associated Ruby Rails/Sidekiq process, you may add the following VS Code task to your configuration under the
.vscode/tasks.json
file:{ "version": "2.0.0", "tasks": [ { "label": "start rdbg for rails-web", "type": "shell", "command": "gdk stop rails-web && GITLAB_RAILS_RACK_TIMEOUT_ENABLE_LOGGING=false PUMA_SINGLE_MODE=true rdbg --open -c bin/rails server", "isBackground": true, "problemMatcher": { "owner": "rails", "pattern": { "regexp": "^.*$", }, "background": { "activeOnStart": false, "beginsPattern": "^(ok: down:).*$", "endsPattern": "^(DEBUGGER: wait for debugger connection\\.\\.\\.)$" } } }, { "label": "start rdbg for rails-background-jobs", "type": "shell", "command": "gdk stop rails-background-jobs && rdbg --open -c bundle exec sidekiq", "isBackground": true, "problemMatcher": { "owner": "sidekiq", "pattern": { "regexp": "^(DEBUGGER: wait for debugger connection\\.\\.\\.)$" }, "background": { "activeOnStart": false, "beginsPattern": "^(ok: down:).*$", "endsPattern": "^(DEBUGGER: wait for debugger connection\\.\\.\\.)$" } } } ] }
-
Add the following configuration to your
.vscode/launch.json
file:{ "version": "0.2.0", "configurations": [ { "type": "rdbg", "name": "Attach rails-web with rdbg", "request": "attach", // remove the following "preLaunchTask" if you do not wish to stop and start // GitLab via VS Code but manually on a separate terminal. "preLaunchTask": "start rdbg for rails-web" }, { "type": "rdbg", "name": "Attach rails-background-jobs with rdbg", "request": "attach", // remove the following "preLaunchTask" if you do not wish to stop and start // GitLab via VS Code but manually on a separate terminal. "preLaunchTask": "start rdbg for rails-background-jobs" } ] }
WARNING:
The VS Code Ruby extension might have issues finding the correct Ruby installation and the appropriate rdbg
command. In this case, add "rdbgPath": "/home/user/.asdf/shims/
(in the case of asdf) to the launch configuration above.
Debugging
Prerequisites
- You must have a running GDK instance.
To start debugging, do one of the following:
- Press F5.
- Run the
Debug: Start Debugging
command. - Open the Run and Debug view, select one of the launch profiles, then select Play ({play}).