我熟悉一些Jruby代码,并且希望能够在代码中放置一个断点并从命令行中运行(像往常一样),并在达到这一点时将其闯入调试器。我可以在代码中投入一些东西来迫使Jruby闯入调试器吗?

我尝试过跑步 jruby -r debug foo.rb (而不是通常 jruby foo.rb),然后与 b bar.py:98, ,然后继续。但是,每次有例外,调试器都会停止,并且似乎有很多东西才能达到我感兴趣的代码线。我希望能够将“ Break-Into-Debuggger”放置我的代码中的行 jruby foo.rb 并有第一个位置,调试器停止在那条线上。

(即我正在寻找相当于Ruby/Jruby import pdb;pdb.set_trace() 在Python。)

有帮助吗?

解决方案

你可以尝试 Netbeans 红宝石IDE, ,它具有嵌入式的Jruby解释器和调试工具,您可以直接在IDE中进行视觉调试。
如果使用IDE不是您的选择,只需安装DE debug 宝石进入您的jruby发行版,并通过 debugger 命令:

  1. 手动下载Ruby-Debug-Base-0.10.3.1-Java.gem debug-commons 到本地目录。
  2. 将宝石安装到您的Jruby Gem存储库中:
    jruby -S gem install -l ruby-debug-base-0.10.3.1-java.gem
  3. 安装Ruby-Debug Gem:
    jruby -S gem install --ignore-dependencies ruby-debug

debugger 命令现在应该工作。

# test.rb
require 'rubygems'
require 'ruby-debug'
debugger
# run like this:
jruby --debug -S rdebug test.rb

更多信息 Netbeans Wiki, rdebug wikiJruby Wiki

其他提示

require 'rubygems'
require 'ruby-debug'
debugger

我在Windows 7上使用Jruby 1.7.3(1.9.3p385)。

与人们所说的相反,在那里 不是 似乎是带有Jruby预装的Ruby-Debug的版本。但是,我通过运行安装了 gem install ruby-debug. 。我以这样的代码启动调试器:

require 'rubygems'
require 'ruby-debug'
debugger

你应该打电话给 debugger 您想要有断点的地方的方法。

我这样运行了代码:

jruby --debug program.rb

--debug 选项是可选的,但是如果没有它,您会得到警告:“跟踪(例如set_trace_func)将不会捕获所有事件,而没有 - 驱动标志”。

这里的另一个答案使用了 -S rdebug 命令行上的选项。该选项对于调试不是必需的,并且使调试器从程序的开头开始。只需打电话 debugger 当您需要时启动调试器的方法;不要使用该选项。

即使没有Ruby-Debug Gem,似乎仍然有某种基本调试内置到Jruby通过 debug.rb. 。你可以简单地写 load 'debug.rb' 在文件中开始进行调试器。它打印出一些垃圾消息(“ debug.rb”和“可用的emacs支持”。),但似乎有效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top