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