在 JRuby 和 Java 之间进行调试



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

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

当我运行带有依赖项的jar时,我可以毫无问题地将调试器附加到Java进程,但我真的很希望能够调试Ruby代码。 有解决方案吗?

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

您可以使用 gem 撬遥控器

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

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

此处提供 2 分钟的实践教程。

缺点:

  • 您不能有 2 个撬动远程会话。
  • 代码必须包含正确的"调试"条件

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

祝你好运!

最新更新