Se si utilizza Ruby 1.9.2+, installare la gemma debugger (gem install debugger
). Esistono due modi per eseguire il debug: includere direttamente la gemma debugger
o utilizzare il binario redbug
. Facciamo finta di avere uno script giocattolo e vogliamo sapere perché $blah
è 4 dopo aver chiamato foo()
(fai finta che sia una libreria esterna).
Metodo 1: Compreso debugger
Questa è la creazione manuale di un punto di interruzione nel codice:
require 'debugger'
$blah = 3
def foo
$blah += 1
end
def bar
$blah += 4
end
foo()
debugger() # opens rdb
bar()
puts $blah
Esegui questo come ruby debug.rb
. Questo vi lancerà in una console ruby-debug:
% 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
Metodo 2: Esecuzione rdebug
Ecco il nostro esempio script di esempio, debug.rb
:
$blah = 3
def foo
$blah += 1
end
def bar
$blah += 4
end
foo()
bar()
puts $blah
Da shell, eseguire rdebug debug.rb
. Ecco una sessione di esempio:
% 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
I comandi principali sono break LINE-NUMBER
e display VARIABLE
. Spero possa aiutare!
Risorse
Ciò significa impostare un punto di interruzione utilizzando 'gdb' o qualche altro debugger C. Sarebbe utile usare un Ruby e le estensioni con il debug abilitato (cioè compilato con '-g'). –
@muistooshort se puoi seguire i passaggi di come è fatto, o fornire un link, penso che probabilmente ti assegnerò la domanda – babonk