在Ruby 1.9中进行调试

90

你们在 Ruby 1.9 中用什么来进行调试?rdebug 似乎不兼容......有没有其他工具可供选择?


10
忽略第一个答案;'ruby-debug19'现在已经过时了。 - Rob Howard
12个回答

167

ruby-debug19不再得到维护,所有其他答案都已过时。

但是这里有一个替代方案:

debugger来帮忙!

将以下内容添加到你的Gemfile中:

gem 'debugger', group: [:development, :test]

它只是起作用。 - 自3.2版本以来,它已经被包含在Rails Gemfile中,以替换ruby-debug19。 它具有完全相同的功能并且正在积极维护。


1
运行得很好。比手动安装 ruby-debug 好多了。谢谢。 - manu_v
5
这个回答真的需要被移到顶部作为最佳回答。 - Matt Zukowski
2
是的,确实这个答案必须成为最佳答案。 - Nazar Hussain
这个应该放在Gemfile的哪里呢? - Rig
可以在Win XP上使用RailsInstaller 2.1.0(ruby 1.9.3p125(2012-02-16)[i386-mingw32])进行操作。谢谢! - Green
显示剩余4条评论

70

针对 Ruby 2.0+ 及以上版本的更新

byebug 是目前推荐用于 Ruby 2.0+ 的调试器。

这个问题已经在这里得到了记录,debugger 的作者 cldwalker 指出 debugger 将仅支持 Ruby 1.9.2 和 1.9.3。

更新 2

虽然我没有找到 ruby-debug 不再维护的信息,但确实它已经不再主动维护了。

如果你需要帮助并使用新的 debugger gem,可以看看Ryan Bates 的 Rails Casts

在你的 Gemfile 中添加:

gem 'debugger', group: [:development, :test]

您可以使用debugger关键字在代码中的任何位置添加断点。

您仍然可以使用

linecache19和ruby-debug-base19:

bash < <(curl -L https://raw.github.com/gist/1333785)

旧的答案:

关于rvm,ruby 1.9.1-p378的这个问题,有一个补充。 事实是,即使ruby-debug可以适用于1.9.x,但linecache-0.43没有适配。 解决方法是安装:

gem install ruby-debug19

这对我解决了问题。

旧版更新

如果你在使用ruby 1.9.2和Rails 3调试时遇到问题,请尝试将以下内容添加:

gem 'ruby-debug-base19', "0.11.24"
gem 'ruby-debug19', "0.11.6"
在你的 Gemfile 中执行以下操作。
bundle install

会让你重新成为快乐的调试者。


1
谢谢,对我来说那是更合适的答案。但也许这是因为你回复了将近一年后,在这方面情况已经发生了好转。 - mark

50

注意:这个答案曾经是正确的,但现在已经过时。请看下面的正确答案。简而言之:现在使用“debugger”。

ruby-debug 现在可以在 Ruby 1.9.x 中使用了。请参见 http://www.github.com/mark-moseley

安装(在 1.9 版本的 Ruby 上使用 gem):

gem install ruby-debug19

(也许需要在其前面加上必要的 'sudo' )。


我进行了一次粗略尝试,但没有成功。需要更多时间来研究这个问题。 - Mark Moseley
ruby-debug-ide现在已经可以使用 - 您可以在http://cloud.github.com/downloads/mark-moseley/ruby-debug/ruby-debug-ide-0.4.7.gem获取新的gem。 - Mark Moseley
干得好 :) 但是你能否制作一个fatgem(包含1.8和1.9的ruby-debug版本),这样我们就不必记得要使用rubydebug19了? :) - horseyguy
4
仅仅因为经过时间的流逝,使得这个答案现在不再正确,就对它进行负面评价似乎是不公平的。Stack Overflow需要一些方法来处理这种情况,允许“新”的正确答案成为第一个列出的答案,而不会惩罚那些已经无用的旧答案的作者。 - iconoclast

3

以下是您可以尝试的一些方法:

1)使用Ruby的常规调试器-rdebug [1]运行,速度较慢

2)使用unroller gem运行[有点糟糕,速度很慢]

3)使用大量的打印语句,速度快,但可能会减少内省能力

4)跳转到irb提示符并从那里运行一些代码。

您可以通过创建自己的“跳转到irb提示符”来列出代码,该提示符会在其周围列出代码[使用caller发现您所在的位置],然后跳转到正常的irb提示符。

5)也许jruby在1.9兼容模式下有一个调试器?

[1] http://beaver.net/rdebug/index-0.html


3

如果您在安装ruby-debug19后仍然遇到问题,请尝试更新ruby-debug-base19。在我这里,只有在更新了ruby-debug-base19之后,我才能在调试模式下运行WEBrick。

gem update ruby-debug-base19

哦,感谢Moseley先生辛勤的工作!


2

我使用以下代码,它对我很有效:

gem 'debugger',group: [:development, :test]

ruby 1.9.3p194(2012年4月20日修订版35410)[x86_64-linux] rails 3.2.8


2

请看我在这里的答案:Ruby-debug not working - Stack Overflow

这是关于如何让 Ruby 调试与以下设置一起工作的问题。

  • Mac OS X Lion 10.7.2
  • Aptana Studio 3 (Build 3.0.8.201201201658)
  • Using rvm, in my project working directory I have a .rvmrc stating:

    rvm use ruby-1.9.3-p0@mygemset
    
我希望这可以帮到你! -Freddy

0

Netbeans是RoR的一个很好的IDE,也具备良好的调试器。


1
请纠正我,但我认为调试器尚未适用于Ruby 1.9.1(C实现)。至少,我没有成功地让它工作。 - JP Richardson

0

最新功能可在ruby-debug-ide19 gem中使用。


0

最新的ruby 1.9.1-p243版本已经发布,兼容的ruby-debug-ide也可以正常工作。使用以下命令安装ruby-debug-ide:

gem install ruby-debug-ide

这将安装ruby-debug-base19和ruby-debug-ide宝石。但在此之前,请确保您按照RubyForge提供的开发工具文档成功安装了mingw。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接