Не удается сломать ни одну точку останова с кодом Visual Studio при удаленной отладке в контейнере Docker - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь удаленно отлаживать код Ruby (on Rails) в контейнере Docker с помощью кода Visual Studio.

У меня не установлен Ruby на моей машине, только в Docker.


  • VSCode: 1.30.1
  • ОС: Windows 10 Profesionnal, 1709
  • Docker Desktop: 2.0.0.0-win81 (29211) Сообщество
  • Докер: 18.09.0
  • Рубин: 2.6.0

Процедура следующая:

  1. Контейнер Docker выполняет команду bundle exec rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 26162 -- bin/rails s -b 0.0.0.0, а затем «Fast Debugger (ruby-debug-ide 0.7.0.beta7, debase 0.2.3.beta3, фильтрация файлов поддерживается) прослушивает 0.0.0.0:1234"
  2. Я начинаю отладку в VScode, и запускается Puma.
  3. Я управляю приложением.
  4. Точки останова не работают.

Однако VSCode указывает на строку, выполняемую, когда я приостанавливаю отладку. После этого я могу перешагнуть, и VARIABLES, WATCH и CALL STACK работают.

Кажется, что только BREAKPOINTS не работают.


Вот мой файл (фрагменты):

launch.json:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Listen for rdebug-ide",
      "type": "Ruby",
      "request": "attach",
      "cwd": "${workspaceRoot},
      "remoteHost": "10.0.75.1",
      "remotePort": "1234",
      "remoteWorkspaceRoot": "/var/work/app",
      "showDebuggerOutput": true,
    }
  ]
}
докер-compose.yml:
services:
  app:
    build: "./app"
    depends_on:
      - db
    ports:
      - "3000:3000"
      - "1234:1234"
      - "26162:26162"
    volumes:
      - "./app:/var/work"
    stdin_open: true
    tty: true
Gemfile:
gem 'ruby-debug-ide', '0.7.0.beta7'
gem 'debase', '~> 0.2.3.beta3'

Я тоже пробовал с этим

gem 'ruby-debug-ide', '0.6.0'
gem 'debase', '~> 0.2.2'

1 Ответ

0 голосов
/ 10 января 2019

В вашем launch.json вам может понадобиться добавить пути к bundle и RdebugIde. Что-то вроде:

{
        "name": "Debug Rails server",
        "type": "Ruby",
        "request": "launch",
        "cwd": "${workspaceRoot}",
        "useBundler": true,
        "pathToBundler": "/path/to/rubygem/wrappers/bundle",
        "pathToRDebugIDE": "/path/to/rubygem/gems/ruby-debug-ide-x.x.x/bin/rdebug-ide",
        "program": "${workspaceRoot}/bin/rails",
        "args": [
            "server",
            "-p",
            "3000"
        ]
    }

и для отладки одной спецификации:

{
        "name": "Debug RSpec - open spec file",
        "type": "launch",
        "request": "attach",
        "cwd": "${workspaceRoot}",
        "useBundler": true,
        "pathToBundler": "/path/to/rubygem/wrappers/bundle",
        "pathToRDebugIDE": "/path/to/rubygem/gems/ruby-debug-ide-x.x.x/bin/rdebug-ide",
        "debuggerPort": "1235",
        "program": "/path/to/rubygem/bin/rspec",
        "args": [
            "${file}"
        ]
    }

Пожалуйста, обратитесь: https://github.com/Microsoft/vscode-recipes/tree/master/debugging-Ruby-on-Rails#bonus для получения дополнительной информации.

Эта работа для меня.

...