Ruby: come passare attraverso il codice rubino [chiuso]

4

Sto cercando di imparare come passare attraverso il codice Ruby (scritto da programmatori più esperti) per migliorare la mia conoscenza di Ruby. Il problema è che non so davvero come farlo bene. Googling l'argomento mi ha portato a una pagina about.com su Ruby; Ho pensato che una risposta più completa di qualità superiore dovrebbe appartenere a StackOverflow, quindi se qualcuno può scrivere una risposta (con un esempio) per esso, mostrando come un principiante può passare attraverso il codice per imparare il più possibile su di esso, sarebbe molto apprezzato.

    
posta user1647484 03.10.2012 - 03:40
fonte

1 risposta

8

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

    
risposta data 03.10.2012 - 04:46
fonte

Leggi altre domande sui tag