教程:使用“Ruby remote debug”调试应用程序RubyMine 为您提供了两种调试运行在远程机器上的应用程序的方法:
添加一个 远程 Ruby 解释器 ,配置本地和远程项目文件之间的映射,并 启动调试会话。
在远程机器上运行应用程序,添加一个远程 Ruby 解释器,配置映射,并 附加到正在运行的进程。
指定的方法可能不适合调试某些项目,例如 SketchUp。 在这种情况下,您可以使用 Ruby 远程调试 运行/调试配置。
在本教程中,我们将向您展示如何使用 Ruby 远程调试 调试一个 示例 Rails 应用程序。
先决条件在本教程中,我们将使用两台机器来演示远程应用程序的调试:
本地机器 :运行 macOS 的 Mac,已安装 RubyMine 安装 RubyMine。
远程机器 :启用了 SSH 访问并安装了 Ruby 解释器 安装 Ruby 的 Ubuntu 机器。
在我们的教程中,远程计算机的名称为 sample-web-server 。
在两台机器上,我们将使用 jetbrains用户的主目录来存储源代码。
创建“Ruby remote debug”配置首先,让我们在 RubyMine 中创建并设置 Ruby 远程调试 配置:
在主菜单中转到 运行 | 编辑配置 ,单击 ,并从列表中选择 Ruby 远程调试。
指定以下设置:
名称 :输入运行/调试配置名称。
示例: Remote debug: sample_rails_app
远程主机 :指定远程机器的主机名或 IP 地址。
示例: sample-web-server 、 172.30.163.90
远程端口 :指定用于在 IDE 和调试器之间建立连接的远程端口。
示例: 1234
远程根文件夹 :指定远程机器上要调试的应用程序所在的根文件夹。
示例: /home/jetbrains/apps/sample_rails_app
本地端口 :指定用于在 IDE 和调试器之间建立连接的本地端口。
示例: 26162
本地根文件夹 :指定本地机器上应用程序的根文件夹。
示例: /Users/jetbrains/RubymineProjects/sample_rails_app
在您指定了所有设置后,将 服务器命令 字段中生成的命令复制到剪贴板。
rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 26162 -- $COMMAND$
稍后它将用于在远程机器上 启动调试器。 $COMMAND$ 部分将被替换为运行应用程序的实际命令。
点击 确定 在 运行/调试配置 对话框。
配置远程解释器在本部分中,我们将 使用 SSH配置远程解释器。
打开 设置 对话框 Ctrl+Alt+S ,转到 语言与框架 | Ruby 解释器 页面,单击 按钮并从列表中选择 远程解释器或版本管理器:
在弹出的对话框中,选择 SSH 凭据 并按以下方式指定参数:
SSH 配置 :单击省略号按钮以创建用于连接到远程机器的 SSH 配置。
Ruby 或版本管理器路径 :在此处指定 Ruby 解释器或 版本管理器可执行文件的路径。 在本教程中,我们在远程机器上使用 rbenv。
在指定所有设置后,单击 确定。
如果您在之前的对话框中指定了版本管理器可执行文件的路径,RubyMine 会建议选择所需的 Ruby 解释器。 在此步骤中,您需要选择用于运行远程应用程序的解释器。
单击 确定 并在 Ruby SDK 和 Gems 页面中选择添加的解释器。
最后,您需要指定本地和远程项目文件之间的映射。 为此,请单击 编辑路径映射 按钮。 在 编辑项目路径映射 对话框中,指定本地和远程项目根路径。
如果需要,您可以仅指定调试所需的源文件夹,而不是项目根路径。
在我们的案例中,路径将如下所示:
本地路径: /Users/jetbrains/RubymineProjects/sample_rails_app
远程路径: /home/deploy/sample_rails_app
在此对话框中单击 确定 ,然后在 设置 对话框中单击 确定。 现在我们已准备好附加到远程进程并调试应用程序。
在远程机器上开始调试在这一部分,我们将在远程机器上安装调试 gems 并启动调试会话。
(可选)RubyMine 允许您使用 Spring 调试 Rails 应用程序。 这可能需要更新系统或项目的 Spring 配置文件,以便将调试器加载到 Spring 分叉 的每个进程中。 为此,将以下代码添加到 ~/.spring.rb 或 config/spring.rb 文件中:
Spring.after_fork do
if ENV['DEBUGGER_STORED_RUBYLIB']
ENV['DEBUGGER_STORED_RUBYLIB'].split(File::PATH_SEPARATOR).each do |path|
next unless path =~ /ruby-debug-ide/
load path + '/ruby-debug-ide/multiprocess/starter.rb'
end
end
end
将调试 gems 安装到目标 Ruby 解释器。 为此,将 debase 和 ruby-debug-ide 添加到 Gemfile 并运行 bundle install。
gem 'debase'
gem 'ruby-debug-ide'
转到应用程序的文件夹,并使用以下命令附加调试器运行它。
rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 26162 -- bin/rails s
如果您想调试一个普通的 Ruby 脚本,命令将如下所示:
rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 26162 -- lib/script.rb
在本地机器上开始调试现在我们准备好在 IDE 中开始调试了。
在您的应用程序中设置 断点。
运行调试会话。 为此,请按两次 Ctrl ,并在弹出窗口中输入配置名称(Remote debug: sample_rails_app)。 按住 Shift 键(对话框标题更改为 Debug ),然后按 Enter。
最后修改日期: 2025年 9月 26日教程:附加到远程进程测试