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]]#