VS Code 디버깅

이 문서에서는 Visual Studio Code (VS Code)에서 GitLab Development Kit (GDK)을 사용하여 Rails 디버깅을 설정하는 방법에 대해 설명합니다.

설정

아래 예제에는 rails-webrails-background-jobs에 대한 런치 구성이 포함되어 있습니다.

  1. gitlab 폴더 내에서 gem install debug 명령을 실행하여 debug 젬을 설치합니다.
  2. VS Code Ruby rdbg Debugger 익스텐션을 설치하여 VS Code에 rdbg 디버거 유형을 지원하도록 확장합니다.
  3. 경우에 따라 GitLab 및 해당 Ruby Rails/Sidekiq 프로세스를 자동으로 중지하고 시작하려면 .vscode/tasks.json 파일 아래 구성을 추가할 수 있습니다:

     {
       "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\\.\\.\\.)$"
             }
           }
         }
       ]
     }
    
  4. 다음 구성을 .vscode/launch.json 파일에 추가합니다:

     {
       "version": "0.2.0",
       "configurations": [
         {
           "type": "rdbg",
           "name": "Attach rails-web with rdbg",
           "request": "attach",
    
           // GitLab을 VS Code를 통해 중지하고 시작하기를 원치 않는 경우 다음 "preLaunchTask" 제거합니다.
           "preLaunchTask": "start rdbg for rails-web"
         },
         {
           "type": "rdbg",
           "name": "Attach rails-background-jobs with rdbg",
           "request": "attach",
    
           // GitLab을 VS Code를 통해 중지하고 시작하기를 원치 않는 경우 다음 "preLaunchTask" 제거합니다.
           "preLaunchTask": "start rdbg for rails-background-jobs"
         }
       ]
     }
    

경고: VS Code Ruby 익스텐션은 올바른 Ruby 설치 및 적절한 rdbg 명령을 찾는 데 문제가 발생할 수 있습니다. 이 경우 위의 런치 구성에 "rdbgPath": "/home/user/.asdf/shims/ (asdf의 경우)를 추가하세요.

디버깅

전제 조건

  • 작동 중인 GDK 인스턴스가 있어야 합니다.

디버깅을 시작하려면 다음 중 하나를 수행합니다:

  • F5를 누릅니다.
  • Debug: Start Debugging 명령을 실행합니다.
  • Run and Debug view를 열고, 런치 프로필 중 하나를 선택한 후 실행 ()을 선택합니다.