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?


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).


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.


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.


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


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!


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


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


0

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


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 .


0

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


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.


-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: ##

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.