JRuby 和 Java 之间的调试

Debugging between JRuby and Java

我有一个大型 Java 项目,它使用了一些 Ruby 脚本(主要是因为 Ruby 对 "yield" 的支持)。 Ruby 代码调用 Java 代码,后者调用更多 Ruby 代码。非常交错,但一切都是从Java.

驱动的

我正在使用嵌入式 jruby-standalone 并构建一个 jar-with-dependencies(通过 maven)。我正在使用 Maven 插件 运行 jrubyc 并生成 .java maven 为我编译的文件。

当我 运行 jar-with-dependencies 时,我可以毫无问题地将我的调试器附加到 Java 进程,但我真的很想能够调试 Ruby代码。有解决办法吗?

我不会启动任何类型的我可以附加参数的 jruby 可执行文件。它嵌入在 jar 中并通过 java -jar 调用。

您可以使用 gem pry-remote.

pry 不同,它不需要从终端(或终端模拟器,如果您使用的是 Windows)启动进程。

它本身并不是真正的调试器,但如果您在代码中添加 binding.remote_pry 以观察并在该上下文中做出反应(例如,您可以捕获异常),这会撬入远程连接的等待模式,您应该可以从另一个终端连接到此进程并对其进行调试。

提供 2 分钟的动手教程 here

缺点:

  • 你不能有 2 个窥探远程会话。
  • 您的代码必须包含正确的 'debugging' 条件

在使用 jruby、h2 和 jetty 服务器开发 Web 应用程序时,我在预部署环境中使用它。

祝你好运!