Depuración en ruby ​​1.9

90

¿Qué usan ustedes para depurar en ruby ​​1.9? rdebug no parece ser compatible ... ¿hay algo ahí fuera?

nube
fuente
10
Ignore la primera respuesta; ruby-debug19está desactualizado ahora.
Rob Howard

Respuestas:

50

Nota: esta respuesta era correcta, pero ahora está desactualizada. Vea la respuesta correcta a continuación. TL; DR: use 'depurador' ahora.

ruby-debug ahora está disponible con Ruby 1.9.x. Ver http://www.github.com/mark-moseley

Para instalar (usando gem en la instalación 1.9 Ruby):

gem install ruby-debug19

(quizás con el 'sudo' necesario delante).

Mark Moseley
fuente
Hice un intento superficial y no funcionó. Necesito más tiempo para ver esto.
Mark Moseley
ruby-debug-ide está funcionando ahora; puede obtener la nueva gema en cloud.github.com/downloads/mark-moseley/ruby-debug/…
Mark Moseley
¡Esta es una gran noticia! ¡Gracias!
andi
Buen trabajo :) pero ¿podrías hacer un fatgem (que contenga las versiones 1.8 y 1.9 ruby-debug) para que no tengamos que recordar hacer rubydebbug19? :)
Horseyguy
4
No parece justo rechazar esto solo porque el paso del tiempo ha hecho que ahora sea la respuesta incorrecta. SO necesita alguna forma de manejar estos casos de uso, para permitir que la nueva respuesta correcta se convierta en la primera en la lista, sin penalizar a los autores de respuestas anteriores que ya no son útiles para nadie.
iconoclasta
167

ruby-debug19ya no se mantiene. Todas las demás respuestas están desactualizadas.

Pero hay una alternativa:

debugger ¡al rescate!

Pon esto en tu Gemfile:

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

Simplemente funciona. - Y está incluido en el Gemfile de rieles desde 3.2 ruby-debug19. Algo para reemplazar . Tiene exactamente la misma funcionalidad y se mantiene activamente.

iblue
fuente
1
Funciona muy bien. Mucho mejor que instalar ruby-debug a mano. Gracias.
manu_v
5
Esto realmente debe moverse hacia arriba como la respuesta principal.
Matt Zukowski
2
Sí, realmente esta respuesta debe ser la respuesta principal.
Nazar Hussain
¿Y qué hay de dónde va esto realmente en el Gemfile?
Aparejo
No importa. Colóquelo donde quiera, pero no dentro de un bloque de grupo (ni en group :development do ... endni similar), porque ya contiene un grupo.
iblue
70

ACTUALIZACIÓN PARA RUBY 2.0+ y SIGUIENTES

byebug es el depurador recomendado actualmente para Ruby 2.0+

Este problema se ha documentado aquí , y cldwalker, el autor del depurador, señala que el depurador se ajustará a Ruby 1.9.2 y 1.9.3.

ACTUALIZACIÓN 2

Es cierto que ruby-debug no se mantiene activamente incluso si no puedo encontrar ningún lugar que ya no se mantenga.

Puede usar la nueva gema depuradora si necesita ayuda para comenzar con la nueva gema que puede ver en los rieles de Ryan Bates .

En su Gemfile ponga:

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

Luego puede agregar un punto de interrupción en cualquier parte de su código usando la debuggerpalabra clave.

TODAVÍA PUEDES USAR

linecache19 y ruby-debug-base19 con:

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

ANTIGUAS RESPUESTAS

Solo un complemento sobre esto con rvm, ruby ​​1.9.1-p378. La historia real es que incluso si ruby-debug está listo para 1.9.x, linecache-0.43 no lo está. La solución es instalar:

gem install ruby-debug19

Esto me resuelve el problema.

ACTUALIZACIÓN ANTIGUA

Si tiene problemas con la depuración de Ruby 1.9.2 y Rails 3:

gem 'ruby-debug-base19', "0.11.24"
gem 'ruby-debug19', "0.11.6"

En su Gemfile y haciendo un

bundle install

Te convertirá en un depurador feliz de nuevo.

tommasop
fuente
1
Gracias, para mí esa fue la respuesta más apropiada. Pero tal vez esto se deba a que respondió casi un año después y las cosas cambiaron para bien en ese sentido.
marca el
3

Algunas cosas que podrías probar

1) ejecútalo con el depurador normal de ruby ​​-rdebug [1] algo lento

2) ejecutarlo con gema desenrolladora [un poco apesta, muy lento]

3) use muchas declaraciones impresas rápidamente, con una menor introspección posible

4) desplácese a un indicador de irb y ejecute algún código desde allí.

podría enumerar el código creando su propio "indicador de irb" que enumera el código alrededor de sí mismo [use el llamador para descubrir dónde está] y luego vaya al indicador de irb normal.

5) ¿tal vez jruby en el modo de compatibilidad 1.9 tiene un depurador?

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

VP.
fuente
3

Si sigue teniendo problemas después de instalar ruby-debug19, intente actualizar ruby-debug-base19. Tuve errores y no pude ejecutar WEBrick en modo de depuración hasta que hice eso.

gem update ruby-debug-base19

¡Ah, y gracias Sr. Moseley por todo su arduo trabajo!

SLaks
fuente
2

Vea mi respuesta aquí: Ruby-debug no funciona

Se trata de hacer que la depuración de Ruby funcione con la siguiente configuración

  • Mac OS X Lion 10.7.2
  • Aptana Studio 3 (compilación 3.0.8.201201201658)
  • Usando rvm, en el directorio de trabajo de mi proyecto tengo un .rvmrc que indica:

    rvm use ruby-1.9.3-p0@mygemset

¡Espero que esto ayude!

- Freddy

Visionscaper
fuente
2

Usé lo siguiente y funciona muy bien para mí:

gem 'depurador', grupo: [: desarrollo,: prueba]

ruby 1.9.3p194 (2012-04-20 revisión 35410) [x86_64-linux] rieles 3.2.8

Mukesh Kumar
fuente
0

Netbeans es un buen IDE para RoR. Buen depurador también.

Zepplock
fuente
1
Corrígeme si me equivoco, pero no creo que el depurador funcione todavía para Ruby 1.9.1 (implementación de C). Al menos, no he logrado que funcione.
JP Richardson
0

La versión de ruby ​​1.9.1-p243 está disponible y ruby-debug-ide compitable también funciona correctamente. Instale ruby-debug-ide usando el siguiente comando:

gema instalar ruby-debug-ide

Esto instalará las gemas ruby-debug-base19 y ruby-debug-ide. Pero antes de esto, asegúrese de instalar mingw correctamente siguiendo los documentos del kit de desarrollo disponibles en RubyForge .

usuario116218
fuente
0

Las últimas funciones están disponibles en ruby-debug-ide19 gem.


fuente
0

Hay muchas opciones, según sus necesidades.

Utilizo movimientos de palanca porque puedo "mirar hacia atrás" en lo que sucedió dentro del comando anterior al volver a ejecutarlos en modo de depuración directamente desde el lugar.

Daniel Garmoshka
fuente
-1

nadie usa: ruby ​​-rdebug script.rb

entonces puede usar: b script.rb: ## (donde ## es el número de línea de un comando ruby ​​válido) de lo contrario, tal vez se encuentre en medio de rubygems o uno de los fragmentos de código requeridos.

Luego, simplemente puede establecer el siguiente punto de interrupción como b: ##

Almiar
fuente