我在Ruby(Jruby)代码中放了什么来闯入调试器?
题
我熟悉一些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
命令:
- 手动下载Ruby-Debug-Base-0.10.3.1-Java.gem debug-commons 到本地目录。
- 将宝石安装到您的Jruby Gem存储库中:
jruby -S gem install -l ruby-debug-base-0.10.3.1-java.gem
- 安装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 wiki 和 Jruby 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支持”。),但似乎有效。