2025-11-08 05:56:21

教程:使用“Ruby remote debug”调试应用程序

教程:使用“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日教程:附加到远程进程测试