Quello che stai cercando è un debugger. Con ruby 1.8, la gemma ruby-debug
fornisce quella canonica e in ruby 1.9 la gemma debugger
fornisce una versione del suo successore ben mantenuta.
Avvia il tuo programma con la gemma caricata, ad esempio ruby -rdebugger yourfile.rb
, e avrai accesso al debugger.
Il debugger si attiva in un breakpoint , che è un segnale per sospendere l'esecuzione e ti dà la possibilità di dare un'occhiata. In genere, il modo più semplice per impostare un punto di interruzione consiste nell'aggiungere una riga di origine nel punto dell'esecuzione a cui sei interessato. Inserendo una chiamata a debugger
, lo fa. Consente di eseguire il debug di questa funzione che richiede un nome utente, ma lo limita ai medici. Non sta lasciando entrare "Dr. Bob":
def get_user
debugger # This is where we break.
name = ""
begin
print "What is your name?: "
name = gets
end until name.match /\ADr /
puts "Welcome, #{name}."
name
end
user = get_user
Consente di avviarlo:
ruby -rdebugger login.rb
Il programma inizia l'esecuzione, quindi il debugger ci interrompe alla riga quattro. Ci mostra la prossima affermazione che deve essere eseguita dopo. Possiamo ottenere un elenco più completo dei nostri dintorni digitando l
.
(rdb:1) l
[-1, 8] in login.rb
1
2 def get_user
3 debugger
=> 4 name = ""
5 begin
6 print "What is your name?: "
7 name = gets
8 end until name.match /\ADr /
Puoi esaminare il risultato delle espressioni usando il comando p
. p name
ci mostrerà che la variabile name
è una stringa vuota in questo punto di esecuzione.
n
passi , che esegue la riga successiva e restituisce il controllo al debugger. s
ti consentirà di passare a una chiamata di metodo. c
continua l'esecuzione fino a quando il programma non termina o raggiunge un altro punto di interruzione. In questo caso, probabilmente vorremmo usare il comando n
per tracciare l'esecuzione di questo metodo. Solo questi pochi comandi descrivono la maggior parte delle mie sessioni di debug.
Il debugger ha una guida interattiva a cui è possibile accedere con help
. Un tutorial più colloquiale sul web è: Debug con ruby-debug