Si está en Ruby 1.9.2+, instale la gema del depurador (gem install debugger
). Hay dos formas de depurar: incluir directamente la gema debugger
o usar el binario redbug
. Hagamos de cuenta que tenemos un script de juguete, y queremos saber por qué $blah
es 4 después de llamar al foo()
(pretende que es una biblioteca externa).
Método 1: Incluyendo debugger
Esto está estableciendo un punto de interrupción en el código manualmente:
require 'debugger'
$blah = 3
def foo
$blah += 1
end
def bar
$blah += 4
end
foo()
debugger() # opens rdb
bar()
puts $blah
Ejecutar esto como ruby debug.rb
. Esto le lanzarse a una consola de rubí de depuración:
% ruby debug.rb
debug.rb:15
bar()
(rdb:1) list
[10, 19] in debug.rb
10 $blah += 4
11 end
12
13 foo()
14 debugger()
=> 15 bar()
16
17 puts $blah
(rdb:1) display $blah
1: $blah = 4
Método 2: Ejecutar rdebug
Aquí está nuestro ejemplo script de ejemplo, debug.rb
:
$blah = 3
def foo
$blah += 1
end
def bar
$blah += 4
end
foo()
bar()
puts $blah
de Shell, ejecutar rdebug debug.rb
. He aquí un ejemplo de sesión:
% rdebug debug.rb
(rdb:1) list 1,20
[1, 20] in /mnt/hgfs/src/stackoverflow/debug.rb
=> 1 $blah = 3
2
3 def foo
4 $blah += 1
5 end
6
7 def bar
8 $blah += 4
9 end
10
11 foo()
12 bar()
13
14 puts $blah
(rdb:1) break 12
Breakpoint 1 file /mnt/hgfs/src/stackoverflow/debug.rb, line 12
(rdb:1) display $blah
1: $blah =
(rdb:1) continue
Breakpoint 1 at /mnt/hgfs/src/stackoverflow/debug.rb:12
1: $blah = 4
/mnt/hgfs/src/stackoverflow/debug.rb:12
bar()
(rdb:1) display $blah
2: $blah = 4
Los comandos de teclado son break LINE-NUMBER
y display VARIABLE
. ¡Espero que ayude!
Recursos
Eso significa establecer un punto de interrupción usando 'gdb' o algún otro depurador de C. Usar un Ruby y extensiones con la depuración habilitada (es decir, compilado con '-g') sería útil. –
@muistooshort Si pudieras seguir los pasos de cómo se hace esto, o proporcionar un enlace, creo que probablemente te adjudique la pregunta – babonk