Rails与rubydebugging器抛出'符号未find:_ruby_current_thread(LoadError)'
我有标准的ruby头和Rails 3.1rc4。 我使用http://dirk.net/2010/04/17/ruby-debug-with-ruby-19x-and-rails-3-on-rvm/安装了ruby-debug。
但是,当我运行rails s --debugger
它会抛出这个奇怪的错误
/Users/schovi/.rvm/gems/ruby-head/gems/activesupport-3.1.0.rc4/lib/active_support/dependencies.rb:237:in `require': dlopen(/Users/schovi/.rvm/gems/ruby-head/gems/linecache19-0.5.12/lib/trace_nums19.bundle, 9): Symbol not found: _ruby_current_thread (LoadError) Referenced from: /Users/schovi/.rvm/gems/ruby-head/gems/linecache19-0.5.12/lib/trace_nums19.bundle Expected in: flat namespace in /Users/schovi/.rvm/gems/ruby-head/gems/linecache19-0.5.12/lib/trace_nums19.bundle - /Users/schovi/.rvm/gems/ruby-head/gems/linecache19-0.5.12/lib/trace_nums19.bundle from /Users/schovi/.rvm/gems/ruby-head/gems/activesupport-3.1.0.rc4/lib/active_support/dependencies.rb:237:in `block in require' from /Users/schovi/.rvm/gems/ruby-head/gems/activesupport-3.1.0.rc4/lib/active_support/dependencies.rb:223:in `block in load_dependency'
任何想法? 谢谢,大卫
更新:
看起来你只需要把它放在你的gemfile中:
gem“debugging器”
现在工作。
旧文章如下
====================================
杰罗姆是正确的,但缺乏细节。 这是一个打击,从这个https://gist.github.com/1331533 ,特别是感谢andrewroth的职位。 我已经testing了这个post的时间。 人们希望这些改变很快就会部署在某个地方。
Installing ruby debugger on ruby 1.9.3-p125: export PATCH_LEVEL=`ruby -e 'puts RUBY_PATCHLEVEL'` export RVM_SRC=$HOME/.rvm/rubies/ruby-1.9.3-p$PATCH_LEVEL/include/ruby-1.9.1 gem install archive-tar-minitar gem install ruby_core_source -- --with-ruby-include=/$RVM_SRC export RVM_SRC=$HOME/.rvm/rubies/ruby-1.9.3-p$PATCH_LEVEL/include/ruby-1.9.1/ruby-1.9.3-p$PATCH_LEVEL wget http://rubyforge.org/frs/download.php/75415/ruby-debug-base19-0.11.26.gem wget http://rubyforge.org/frs/download.php/63094/ruby-debug19-0.11.6.gem wget http://rubyforge.org/frs/download.php/75414/linecache19-0.5.13.gem gem install linecache19-0.5.13.gem -- --with-ruby-include=/$RVM_SRC # if that step failed, and you are running OSX Lion, then following this post can help you: # http://stackoverflow.com/questions/8032824/cant-install-ruby-under-lion-with-rvm-gcc-issues # this happens if you recently installed xcode from the app store. # bizarrely, for me I had to do this: ln -s /usr/bin/gcc /usr/bin/gcc-4.2 gem install ruby-debug-base19-0.11.26.gem -- --with-ruby-include=/$RVM_SRC Then edit Gemfile: gem 'linecache19', '0.5.13', :path => "~/.rvm/gems/ruby-1.9.3-p#{RUBY_PATCHLEVEL}/gems/linecache19-0.5.13/" gem 'ruby-debug-base19', '0.11.26', :path => "~/.rvm/gems/ruby-1.9.3-p#{RUBY_PATCHLEVEL}/gems/ruby-debug-base19-0.11.26/" gem 'ruby-debug19', :require => 'ruby-debug' Then install: bundle install
我使用了ruby-debug(19)的1.9.2和1.9.3版本的gem“debugging器” ,并且很容易安装rvm / rbenvruby。 它使错误消失!
看起来这是ruby-debug-base目前已知的一个bug。 我已经在bug跟踪器上添加了我的评论。 请考虑添加您的笔记:
http://rubyforge.org/tracker/index.php?func=detail&aid=29222&group_id=8883&atid=34290
同时,ruby 1.9有一个内置的debugging器, 它只是非常缓慢。 手动将此需求行添加到您的代码中:
require 'debug'
此外,debugging器默认情况下会中断所有StandardErrorexception,所以在第一次启动时执行此操作:
catch off
如果你正在运行Ruby 1.9.3x,要修复它在rubyforge ruby-debug ,下载并安装ruby-debug-base 0.11.26和linecache19 0.5.13。 修改你的Gemfile使用这些文件,然后运行
bundle update ruby-debug-base19
debugging器应该现在工作。
谢谢Jerome
这是固定升级到所有debugging的最新的gem
使用ruby 1.9.3,除了'ruby-debug19'之外,我还可以通过添加gem'ruby-debug-base19x'(注意名称末尾的'x')来实现这个function。
我的系统在Mac OSX 10.8.5上是rvm 1.18.10和ruby 1.9.3p392。 我首先安装了gem'ruby-debug19',但由于众所周知的原因,debugging器不工作。
我然后跑了
local$ gem install 'debugger'
正如许多其他职位所build议的。 gem安装成功,输出如下:
local$ gem install debugger Fetching: debugger-ruby_core_source-1.2.3.gem (100%) Fetching: debugger-linecache-1.2.0.gem (100%) Fetching: debugger-1.6.2.gem (100%) Building native extensions. This could take a while... Successfully installed debugger-ruby_core_source-1.2.3 Successfully installed debugger-linecache-1.2.0 Successfully installed debugger-1.6.2 3 gems installed Installing ri documentation for debugger-ruby_core_source-1.2.3... Installing ri documentation for debugger-linecache-1.2.0... Installing ri documentation for debugger-1.6.2... Installing RDoc documentation for debugger-ruby_core_source-1.2.3... Installing RDoc documentation for debugger-linecache-1.2.0... Installing RDoc documentation for debugger-1.6.2... local$ irb 1.9.3-p392 :002 > require 'debugger' => true
我然后跑了
local$ rails server --debug /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251: in`require': dlopen(/usr/local/rvm/gems/ruby-1.9.3-p392/gems/ruby-debug-base19-0.11.25/lib/ruby_debug.bundle, 9): Symbol not found: _ruby_current_thread (LoadError) Referenced from: /usr/local/rvm/gems/ruby-1.9.3-p392/gems/ruby-debug-base19-0.11.25/lib/ruby_debug.bundle Expected in: flat namespace in /usr/local/rvm/gems/ruby-1.9.3-p392/gems/ruby-debug-base19-0.11.25/lib/ruby_debug.bundle - /usr/local/rvm/gems/ruby-1.9.3-p392/gems/ruby-debug-base19-0.11.25/lib/ruby_debug.bundle ......
我通过注释掉“gem ruby-debug19”这一行并在Gemfile中添加一行“gem'debugger'”解决了这个错误,然后运行
local$ bundle update
之后,一切正常。
local$ rails server --debug => Booting WEBrick => Rails 3.2.14 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server => Debugger enabled [2013-10-15 12:50:21] INFO WEBrick 1.3.1 [2013-10-15 12:50:21] INFO ruby 1.9.3 (2013-02-22) [x86_64-darwin10.8.0] [2013-10-15 12:50:21] INFO WEBrick::HTTPServer#start: pid=7206 port=3000