使用ruby-debugger抛出的Rails'找不到符号:_ruby_current_thread(LoadError)'

Sch*_*ovi 52 ruby ruby-on-rails ruby-debug

我有标准的ruby-head和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'
Run Code Online (Sandbox Code Playgroud)

任何的想法?谢谢,大卫

Rob*_*Rob 54

更新:

看起来你只需要把它放在你的gemfile中:

宝石"调试器"

现在有效.

旧文章如下

====================================

杰罗姆是正确的,但缺乏细节.这是一个打击,来自这个https://gist.github.com/1331533,特别感谢andrewroth的帖子.截至本文发表时,我已对此进行了测试.人们希望这些变化很快会在标准的某个地方部署.

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
Run Code Online (Sandbox Code Playgroud)


Mus*_*fah 21

我使用了gem'调试器',这是一个ruby-debug(19)的分支,适用于1.9.2和1.9.3,可以很容易地安装rvm/rbenv rubies.它使错误消失!

  • 谢谢......它有效,而且太容易了:) (2认同)

Tra*_*ick 11

看起来这是ruby-debug-base中的一个已知错误.我在bug跟踪器上添加了我对该问题的评论.请考虑添加您的笔记:

http://rubyforge.org/tracker/index.php?func=detail&aid=29222&group_id=8883&atid=34290

与此同时,ruby 1.9有一个内置的调试器; 它只是非常慢.手动将此require行添加到您的代码中:

require 'debug'
Run Code Online (Sandbox Code Playgroud)

此外,默认情况下,调试器会中断所有StandardError异常,因此首次启动时会执行此操作:

catch off
Run Code Online (Sandbox Code Playgroud)


jtb*_*lin 6

如果您正在运行Ruby 1.9.3x,要修复它,请访问rubyforge上的ruby-debug,下载并安装ruby-debug-base 0.11.26和linecache19 0.5.13.修改您的Gemfile以使用这些文件,然后运行

bundle update ruby-debug-base19
Run Code Online (Sandbox Code Playgroud)

调试器现在应该工作.

谢谢杰罗姆

  • ruby-debug-base19 v 0.11.26没有在我的系统上编译(使用rvm).我不得不添加ruby包括使其编译:gem install ruby​​-debug-base19-0.11.26.gem - --with-ruby-include =〜/ .rvm/rubies/ruby​​-1.9.3-p0 /包括/红宝石1.9.1 /红宝石1.9.3-P0 / (2认同)