2012-09-04 12 views
6

El depurador de rubí no se detiene en los puntos de interrupción que puse en archivos diferentes a la de la ejecución comienza en Por ejemplo, considere estos dos archivos, foo.rb:.valor en un archivo diferente tiene ningún efecto

# foo.rb 
class Foo 
    def bar 
    puts "baz" 
    end 
end 

y main.rb:

# main.rb 
require './foo' 
Foo.new.bar 

que iniciar la depuración utilizando ruby -r debug .\main.rb. Ahora, cuando intento establecer un punto de interrupción en una línea específica en otro archivo usando b ./foo.rb:4, recibo el mensaje Establezco el punto de interrupción 1 en foo.rb: 4, pero cuando yo cont, el programa se ejecuta hasta el final y el depurador nunca se detiene Sin embargo, si rompo una línea en main.rb, p. b ./main.rb:3, o un método, p. b Foo.bar, el depurador se detiene como se esperaba.

¿Por qué el depurador no se detiene en puntos de interrupción en archivos que no sean el archivo principal?

Actualización: He intentado esto con Ruby 1.9.3 en Windows 7 y OS X 10.8; no funciona en ninguno de los ambientes.

he dado cuenta de que también acaba el depurador se cierra después de que el guión ha corrido hasta el final: Me iniciar la depuración main.rb, utilice cont, entonces Baz se imprime en la consola y estoy de regreso en la cáscara. ¿Es este el comportamiento esperado o es posible que el depurador se haya bloqueado?

+0

¿Ha intentado establecer el punto de interrupción en el principal: 3 (después de que la requieren ha cargado), corriendo a ese punto de interrupción y luego establecer el segundo punto de interrupción? –

+0

@AlexBrown Siguiendo su sugerencia, he superado el requerimiento con 'next', luego agregué el punto de interrupción en * foo.rb * y' cont''d - mismo resultado. – waldrumpus

+0

Tengo el mismo problema ahora usando ruby ​​2.1.0. ¿Lo has resuelto? – studyro

Respuesta

1

Guau, eso es raro. No estoy seguro de si esto ayuda, pero tal vez podrías hacer esto. Pasar por encima de la requerirá la siguiente así que Foo se carga entonces

b Foo:bar 

que debería al menos descanso en la barra

+0

Gracias por el puntero, funciona. El problema original con puntos de interrupción en línea específica persiste. – waldrumpus

+0

Sí, jugué con tu ejemplo durante bastante tiempo también. Muy extraño, parece que debería funcionar. – rainkinz

Cuestiones relacionadas