2011-08-14 25 views
8

Possible Duplicate:
Rails 3.1 and Ruby 1.9.3p125: ruby-debug19 still crashes with “Symbol not found: _ruby_threadptr_data_type”rubí debug19 de rubí-1.9.3-preview1

estoy teniendo algunos problemas para conseguir la depuración de trabajo sobre la liberación preview1 rubí 1.9.3.

He instalado el 1.9.3 usando RVM con el siguiente comando:

rvm install 1.9.3 --reconfigure --debug -C --enable-pthread 

e instalado rubí debug19 con esto:

gem install ruby-debug19 -- --with-ruby-include=$rvm_path/src/ruby-1.9.3-preview1 

La gema de depuración se instala bien, pero cuando voy para abrir una consola con la depuración o intente algo con un indicador de depuración rails c --debug o rspec spec --debug. Me sale el siguiente error:

/Users/mario/.rvm/gems/[email protected]/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `require': dlopen(/Users/mario/.rvm/gems/[email protected]/gems/ruby-debug-base19-0.11.25/lib/ruby_debug.bundle, 9): Symbol not found: _ruby_current_thread (LoadError) 
    Referenced from: /Users/mario/.rvm/gems/[email protected]/gems/ruby-debug-base19-0.11.25/lib/ruby_debug.bundle 
    Expected in: flat namespace 
in /Users/mario/.rvm/gems/[email protected]/gems/ruby-debug-base19-0.11.25/lib/ruby_debug.bundle - /Users/mario/.rvm/gems/[email protected]/gems/ruby-debug-base19-0.11.25/lib/ruby_debug.bundle 
    from /Users/mario/.rvm/gems/[email protected]/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `block in require' 
    from /Users/mario/.rvm/gems/[email protected]/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:225:in `block in load_dependency' 
    from /Users/mario/.rvm/gems/[email protected]/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:596:in `new_constants_in' 
    from /Users/mario/.rvm/gems/[email protected]/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:225:in `load_dependency' 
    from /Users/mario/.rvm/gems/ruby-[email protected]/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `require' 
    from /Users/mario/.rvm/gems/[email protected]/gems/ruby-debug-base19-0.11.25/lib/ruby-debug-base.rb:1:in `<top (required)>' 
    from /Users/mario/.rvm/gems/[email protected]/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `require' 
    from /Users/mario/.rvm/gems/[email protected]/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `block in require' 
    from /Users/mario/.rvm/gems/[email protected]/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:225:in `block in load_dependency' 
    from /Users/mario/.rvm/gems/[email protected]/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:596:in `new_constants_in' 
    from /Users/mario/.rvm/gems/[email protected]/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:225:in `load_dependency' 
    from /Users/mario/.rvm/gems/[email protected]/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `require' 
    from /Users/mario/.rvm/gems/[email protected]/gems/ruby-debug19-0.11.6/cli/ruby-debug.rb:5:in `<top (required)>' 
    from /Users/mario/.rvm/gems/[email protected]/gems/bundler-1.0.17/lib/bundler/runtime.rb:68:in `require' 
    from /Users/mario/.rvm/gems/[email protected]/gems/bundler-1.0.17/lib/bundler/runtime.rb:68:in `block (2 levels) in require' 
    from /Users/mario/.rvm/gems/[email protected]/gems/bundler-1.0.17/lib/bundler/runtime.rb:66:in `each' 
    from /Users/mario/.rvm/gems/[email protected]/gems/bundler-1.0.17/lib/bundler/runtime.rb:66:in `block in require' 
    from /Users/mario/.rvm/gems/[email protected]/gems/bundler-1.0.17/lib/bundler/runtime.rb:55:in `each' 
    from /Users/mario/.rvm/gems/[email protected]/gems/bundler-1.0.17/lib/bundler/runtime.rb:55:in `require' 
    from /Users/mario/.rvm/gems/[email protected]/gems/bundler-1.0.17/lib/bundler.rb:120:in `require' 
    from /Users/mario/Work/project/config/application.rb:7:in `<top (required)>' 
    from /Users/mario/.rvm/gems/[email protected]/gems/railties-3.0.9/lib/rails/commands.rb:21:in `require' 
    from /Users/mario/.rvm/gems/[email protected]/gems/railties-3.0.9/lib/rails/commands.rb:21:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 
+0

Estás caminando en el borde de la sangría, entre León y 1.9.3-vista previa. Es posible que desee ponerse en contacto con el autor/partidarios de ruby-debug directamente. –

+0

Sí me doy cuenta, que pensé en hacer la pregunta para ver si alguien tenía una solución ya o si hay algo que he echado de menos. Registraré un ticket si a nadie se le ocurre algo. –

+0

ver http://stackoverflow.com/questions/6438116/rails-with-ruby-debugger-throw-symbol-not-found-ruby-current-thread-loaderror/7096617#7096617 –

Respuesta

0

Aquí es una solución temporal: http://blog.wyeworks.com/2011/11/1/ruby-1-9-3-and-ruby-debug

Extracto del sitio:

First download linecache19-0.5.13.gem and ruby-debug-base19-0.11.26.gem from http://rubyforge.org/frs/?group_id=8883 , then …

$ gem install linecache19-0.5.13.gem 
Building native extensions. This could take a while... 
Successfully installed linecache19-0.5.13 
1 gem installed 
$ gem install ruby-debug-base19-0.11.26.gem -- --with-ruby-include=/Users/santiago/.rbenv/source/ruby-1.9.3-p0 
Building native extensions. This could take a while... 
Successfully installed ruby-debug-base19-0.11.26 
1 gem installed 
$ irb 
irb(main):001:0> require 'ruby-debug' 
=> true 
+1

respuestas con solo enlaces no son útiles si el enlace desaparece en el futuro. ¿Puedes resumir o parafrasear lo que dice allí? –

13

He aquí un alternate solution I found in a Gist por rafaeldx7.

Básicamente, la solución es utilizar versiones más nuevas de un par de bibliotecas, linecache19 v0.5.13 & ruby-debug-base19 v0.11.26, ninguno de los cuales está en el repositorio rubygem todavía.

# Install with: 
# bash < <(curl -L https://raw.github.com/gist/1333785) 
# 
# Reference: http://blog.wyeworks.com/2011/11/1/ruby-1-9-3-and-ruby-debug 

echo "Installing ruby-debug with ruby-1.9.3-p0 ..." 

curl -OL http://rubyforge.org/frs/download.php/75414/linecache19-0.5.13.gem 
curl -OL http://rubyforge.org/frs/download.php/75415/ruby-debug-base19-0.11.26.gem 

gem install linecache19-0.5.13.gem ruby-debug-base19-0.11.26.gem -- --with-ruby-include=$rvm_path/src/ruby-1.9.3-p0/ 

rm linecache19-0.5.13.gem ruby-debug-base19-0.11.26.gem 

echo "Done." 
+3

no se pierda la sencilla instalación oculta en el comentario: 'fiesta <<(rizar -L https://raw.github.com/gist/1333785)' –

+0

o, para los usuarios rbenv que no tienen la fuente de rubí por ahí (substitue su número de versión rubí): 'joya instalar linecache19-0.5.13.gem ruby-debug-base19-0.11.26.gem - with-rubí incluir = ~/.rbenv/versiones/1.9. 3-p125/include/ruby-1.9.1/1.9.3-rubí p125' – gerrit

7

EDIT: La solución de git-pinning funcionó al principio, pero no he podido usarla de forma coherente. Lo dejaré aquí porque la gente lo votó a favor, pero creo que mi CLI de depuración de rubíes funcionó por casualidad, ya que está empaquetado de una manera poco convencional.

Recomendaría usar pry; parece ser ruby-debug y más. Además, he utilizado require 'debug' por un tiempo, mencionado en la parte superior de la respuesta (y posiblemente lo que las personas estaban subiendo de tono) y el alcance que le deja caer no suele ser el esperado. De nuevo, use pry (y tenga en cuenta que si desea un paso similar a un depurador, también necesita this pry plugin, que aún no he necesitado/probado).


sierra Rails with ruby-debugger throw 'Symbol not found: _ruby_current_thread (LoadError)' (resumen: se puede usar 1.9s construido en el depurador por ahora) justo después me di cuenta de lo siguiente:

Desde noto que está tratando de conseguir que funcione con rieles, en caso de que estés usando bundler, se puede añadir a su Gemfile:

gem 'linecache19', :git => 'https://github.com/mark-moseley/linecache.git' 
gem 'ruby-debug-base19', :git => 'https://github.com/mark-moseley/ruby-debug.git' 

luego ejecutar:

bundle config build.ruby-debug-base19 --with-ruby-include="$rvm_path/src/$(rvm tools strings)/" 
bundle install 
+1

incluso con esto, todavía me no puede cargar dicho archivo - rubí de depuración, incluso si digo: requiero => 'ruby-debug ' –

+0

Sí, debo tener algo configurado correctamente. No puedo reproducirlo en otro proyecto. El problema es que la tarea 'paquete' de ruby-debug-base19 crea dos gemas, una para la base y otra para el intérprete CLI. Parece que solían ser dos proyectos, pero se fusionaron? No estoy seguro por qué, pero hace que sea difícil de usar así. De todos modos, actualicé mi solución para asesorar a 'pry' – Woahdae

0

Esto es lo que hice para que las cosas funcionen con Bundler 1.xy Ruby 1.9.3-p0 (la versión estable y publicada). Esperemos que esto se vuelva obsoleto pronto, pero mientras tanto, es una solución viable si esto es lo que necesita.

Primero, instale las gemas linecache y ruby-debug-base como gemas del sistema. Tenga en cuenta que obtuve estos de diferentes lugares.

$ curl -OL http://rubyforge.org/frs/download.php/75415/ruby-debug-base19-0.11.26.gem 
$ gem install linecache19-0.5.13.gem 
$ gem install --pre ruby-debug-base19x # installs ruby-debug-base19x-0.11.30.pre4 

A continuación, volver a crear la fuente joya para cada gema instalado:

$ mkdir ~/src/linecache19 
$ cd /r193 # where your 1.9.3 is installed; system dependent 
$ cd lib/ruby/gems/1.9.1 # where your gems are, should be the same 
$ cp specifications/linecache19.gemspec ~src/linecache19 
$ cp -r gems/linecache19-0.5.13/* ~/src/linecache19 

$ mkdir ~/src/ruby-debug-base19x 
$ cp specifications/ruby-debug-base19x-0.11.30.pre4.gemspec ~/src/ruby-debug-base19x 
$ cp -r ruby-debug-base19x-0.11.30.pre4/* ~/src/ruby-debug-base19x 

Ahora se puede hacer referencia a estos directorios en su Gemfile utilizando la directiva :path. Si usted tiene un repositorio Git local, puede agregar cometer esos directorios allí y referirse a ellos desde su Gemfile, algo como esto:

group :development do 
    gem 'linecache19', '~>0.5.12', :git => 'git://git-repo/ruby/linecache19.git' 
    gem 'ruby-debug-base19x', :git => 'git://git-repo/ruby/ruby-debug-base19x.git' 
    gem 'ruby-debug19', :require => 'ruby-debug' 
    gem 'ruby-prof' 
end 
3

He creado un acuerdo de recompra Rubygems con la versión más reciente de 1.9.3.

Apenas añada esta línea de origen en el Gemfile, y es todo listo:

source 'http://rubydebug19.s3.amazonaws.com' 

gem 'ruby-debug19', :group => :development 
+0

¡Bien hecho! ¡Estoy tan cansado de volver a aprender a lidiar con este problema en cada proyecto! – Troy

0

la mayoría de estas respuestas han ido rancio ya 1.9.3-p125.

que he escrito hasta nuevas instrucciones aquí para Ubuntu 11.10: https://gist.github.com/2218661