【问题标题】:Debugging between JRuby and JavaJRuby 和 Java 之间的调试
【发布时间】:2015-05-08 12:48:32
【问题描述】:

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

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

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

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

【问题讨论】:

  • 如果我理解正确的话,带有 Ruby 插件的 IntelliJ IDEA Ultimate 支持这种跨语言调试。

标签: java debugging jruby jruby-java-interop


【解决方案1】:

您可以使用 gem pry-remote

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

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

2 分钟上手教程可在here.

缺点:

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

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

祝你好运!

【讨论】:

  • 感谢您的回答!不幸的是,我们已经放弃了 ruby​​,只是将所有 ruby​​ 逻辑重写为 Java(尽管可能很丑),所以我真的无法验证。但我会奖励你正确的答案,直到有人出现并说它不起作用。 =)
猜你喜欢
  • 2018-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2021-11-12
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多