Ruby - Debugger
Non importa quanto sia facile usare una lingua, di solito contiene alcuni bug se è lunga più di poche righe. Per aiutare ad affrontare i bug, la distribuzione standard di Ruby include un debugger.
Per avviare il debugger di Ruby, caricare la libreria di debug utilizzando l'opzione della riga di comando -r debug . Il debugger si ferma prima della prima riga di codice eseguibile e richiede l'input dei comandi utente.
Sintassi di utilizzo
Ecco la sintassi di utilizzo per utilizzare il debugger di ruby:
$ ruby -r debug filename[, ...]
Comandi del debugger di Ruby
Ecco un elenco completo di comandi, che puoi utilizzare durante il debug del tuo programma. Qui, non è necessario usare la parola chiave complete per dare un comando, la parte data all'interno [...] è un'opzione.
| Sr.No. | Comando e descrizione |
|---|---|
| 1 | b[reak] [< file| class>:]< line| method> Imposta il punto di interruzione in una posizione. Il punto di interruzione è un punto in cui si desidera sospendere l'esecuzione del programma a scopo di debug. |
| 2 | wat[ch] expression Imposta i punti di osservazione. |
| 3 | cat[ch] (exception|off) Imposta il catchpoint su un'eccezione. |
| 4 |
b[reak] Visualizza breakpoint e watchpoint. |
| 5 | del[ete] [n] Elimina i punti di interruzione. |
| 6 | disp[lay] expression Visualizza il valore dell'espressione . |
| 7 | undisp[lay] [ n] Rimuove la visualizzazione di n |
| 8 | c[ont] Continua l'esecuzione. |
| 9 | s[tep] [ n] Esegue le successive n righe entrando nei metodi. |
| 10 | n[ext] [ n] Esegue le successive n linee superando i metodi. |
| 11 | w[here] Visualizza lo stack frame |
| 12 | f[rame] Sinonimo di dove. |
| 13 | l[ist][<-| n- m>] Visualizza le linee di origine da n a m. |
| 14 | up [ n] Si sposta verso l'alto di n livelli nello stack frame. |
| 15 | down [ n] Si sposta verso il basso di n livelli nello stack frame. |
| 16 | fin[ish] Termina l'esecuzione del metodo corrente. |
| 17 | tr[ace] [on|off] Attiva e disattiva la modalità traccia. |
| 18 | q[uit] Esce dal debugger. |
| 19 | v[ar] g[lobal] Visualizza le variabili globali. |
| 20 | v[ar] l[ocal] Visualizza le variabili locali. |
| 21 | v[ar] i[instance] object Visualizza le variabili di istanza dell'oggetto |
| 22 | v[ar] c[onst] object Visualizza le costanti dell'oggetto . |
| 23 | m[ethod] i[instance] object Visualizza i metodi di istanza dell'oggetto . |
| 24 | m[ethod] class| module Visualizza i metodi di istanza della classe o del modulo . |
| 25 | th[read] l[ist] Visualizza i thread. |
| 26 | th[read] c[ur[rent]] Visualizza il thread corrente. |
| 27 | th[read] n Arresta il thread specificato. |
| 28 | th[read] stop > Sinonimo di [leggi] n. |
| 29 | th[read] c[ur[rent]] n> Sinonimo di [leggi] n |
| 30 | th[read] resume > Riprende il thread n |
| 31 | p expression Valuta l' espressione |
| 32 | h[elp] Visualizza il messaggio della guida |
| 33 | everything else Valuta. |
Esempio
Considera il seguente file hello.rb , che deve essere sottoposto a debug:
#!/usr/bin/env ruby
class Hello
def initialize( hello )
@hello = hello
end
def hello
@hello
end
end
salute = Hello.new( "Hello, Mac!" )
puts salute.hello
Ecco una sessione interattiva catturata. I comandi dati sono scritti in grassetto -
[[email protected]]# ruby -r debug hello.rb
Debug.rb
Emacs support available.
hello.rb:3:class Hello
(rdb:1) v l
salute => nil
(rdb:1) b 10
Set breakpoint 1 at hello.rb:10
(rdb:1) c
Hello, Mac!
[[email protected]]#
