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
debuggem by runninggem install debuginside yourgitlabfolder.Install the VS Code Ruby
rdbgDebugger extension to add support for therdbgdebugger 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.jsonfile:{ "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.jsonfile:{ "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" } ] }
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 Debuggingcommand. - Open the Run and Debug view, select one of the launch profiles, then select Play ( ).