0

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

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

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

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

4

1 回答 1

1

您可以使用 gem pry-remote

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

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

此处提供 2 分钟的动手教程。

缺点:

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

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

祝你好运!

于 2015-07-03T10:16:53.717 回答