ruby-on-rails - 在 Docker 容器上进行远程调试时,无法使用 Visual Studio 代码中断任何断点

标签 ruby-on-rails ruby docker visual-studio-code vscode-debugger

我正在尝试使用 Visual Studio Code 在 Docker 容器中远程调试 Ruby(on Rails) 代码。

我的机器上没有安装 Ruby,只是在 Docker 中。

  • VSCode:1.32.3
  • 操作系统:Windows 10 专业版,1709
  • Docker 桌面:2.1.0.5 社区稳定版
  • docker :19.03.5
  • ruby :2.6.5


  • 程序如下:
  • Docker容器执行命令bundle exec rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 26162 -- bin/rails s -b 0.0.0.0然后“快速调试器(ruby-debug-ide 0.7.0.beta7,debase 0.2.3.beta3,支持文件过滤)监听 0.0.0.0:1234”
  • 我开始在 VScode 中调试,然后 Puma 开始了。
  • 我操作应用程序。
  • 断点不起作用。

  • 但是,当我暂停调试时,VSCode 指示正在执行的行。之后我可以跨过去,VARIABLES、WATCH 和 CALL STACK 正在工作。

    似乎只有 BREAKPOINTS 不起作用。

    这是我的文件(片段):

    启动.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,
        }
      ]
    }
    

    docker -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.lock:
    ruby-debug-ide (0.7.0)
    debase (0.2.4.1)
    

    最佳答案

    我的问题已经解决了。

    我修改了launch.json,它起作用了。似乎错误的是“cmd”的目录规范。
    “cmd”必须设置为 Windows 格式。

    供引用,目录结构如下:

    product_root
    ├── .vscode
    │   └── launch.json
    ├── product
    │   ├── rails_root
    │   │   ├── app
    │   │   ├── Gemfile
    │   │   ├── etc.
    │   └── Dockerfile
    └── docker-compose.yml
    

    启动.json
    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "Listen for rdebug-ide",
          "type": "Ruby",
          "request": "attach",
          "cwd": "${workspaceRoot}\\product\\rails_root",
          "remoteHost": "localhost",
          "remotePort": "1234",
          "remoteWorkspaceRoot": "/var/work/rails_root"
        }
      ]
    }
    

    docker -compose.yml
    services:
      app:
        build: "./product"
        depends_on:
          - db
        ports:
          - "3000:3000"
          - "1234:1234"
          - "26162:26162"
        volumes:
          - "./product:/var/work"
        stdin_open: true
        tty: true
    

    关于ruby-on-rails - 在 Docker 容器上进行远程调试时,无法使用 Visual Studio 代码中断任何断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54120989/

    相关文章:

    docker - 带有 Vagrant 节点的 Kubernetes 不会注册

    ruby-on-rails - Mongoid::Document 是 GlobalID::ActiveJobs 的标识吗?

    ruby-on-rails - 引用 Ruby 嵌套类的表示法

    ruby - Controller 无法检测到 ajax 请求

    ruby-on-rails - 如何在 Rails 中 POST/PUT 数组参数

    ruby-on-rails - 用于 ruby​​/rails 的 OCR tesseract gem - 如何安装?

    ruby-on-rails - 将自定义类放在 Rails 应用程序的什么位置以便它们在全局范围内可用?

    ruby-on-rails - Rails 中 URL 中的未知标记

    angular - 在多容器docker-compose设置中,我应该添加什么作为api地址?

    perl - 如何设置我的 Dockerfile 以使用 cpanm 安装特定版本的 Perl 模块?