Precedente: Informazioni sul debugger, Su: Lista dei comandi di debug [Contenuti][Indice]
Ci sono alcuni altri comandi che non rientrano nelle precedenti categorie, come i seguenti:
dump
[nome-file]Riversa il byte code del programma nello standard output o nel file
definito in nome-file. Questo stampa una rappresentazione delle
istruzioni interne che gawk
esegue per implementare i comandi
awk
in un programma. Ciò può essere molto istruttivo, come
dimostra il seguente riversamento parziale del codice offuscato di
Davide Brini (vedi la sezione E ora per qualcosa di completamente differente):
gawk> dump -| # BEGIN -| -| [ 1:0xfcd340] Op_rule : [in_rule = BEGIN] [source_file = brini.awk]
-| [ 1:0xfcc240] Op_push_i : "~" [MALLOC|STRING|STRCUR] -| [ 1:0xfcc2a0] Op_push_i : "~" [MALLOC|STRING|STRCUR] -| [ 1:0xfcc280] Op_match : -| [ 1:0xfcc1e0] Op_store_var : O -| [ 1:0xfcc2e0] Op_push_i : "==" [MALLOC|STRING|STRCUR] -| [ 1:0xfcc340] Op_push_i : "==" [MALLOC|STRING|STRCUR] -| [ 1:0xfcc320] Op_equal : -| [ 1:0xfcc200] Op_store_var : o -| [ 1:0xfcc380] Op_push : o -| [ 1:0xfcc360] Op_plus_i : 0 [MALLOC|NUMCUR|NUMBER] -| [ 1:0xfcc220] Op_push_lhs : o [do_reference = true] -| [ 1:0xfcc300] Op_assign_plus : -| [ :0xfcc2c0] Op_pop : -| [ 1:0xfcc400] Op_push : O -| [ 1:0xfcc420] Op_push_i : "" [MALLOC|STRING|STRCUR] -| [ :0xfcc4a0] Op_no_op : -| [ 1:0xfcc480] Op_push : O -| [ :0xfcc4c0] Op_concat : [expr_count = 3] [concat_flag = 0] -| [ 1:0xfcc3c0] Op_store_var : x -| [ 1:0xfcc440] Op_push_lhs : X [do_reference = true] -| [ 1:0xfcc3a0] Op_postincrement : -| [ 1:0xfcc4e0] Op_push : x -| [ 1:0xfcc540] Op_push : o -| [ 1:0xfcc500] Op_plus : -| [ 1:0xfcc580] Op_push : o -| [ 1:0xfcc560] Op_plus : -| [ 1:0xfcc460] Op_leq : -| [ :0xfcc5c0] Op_jmp_false : [target_jmp = 0xfcc5e0] -| [ 1:0xfcc600] Op_push_i : "%c" [MALLOC|STRING|STRCUR] -| [ :0xfcc660] Op_no_op : -| [ 1:0xfcc520] Op_assign_concat : c -| [ :0xfcc620] Op_jmp : [target_jmp = 0xfcc440] … -| [ 2:0xfcc5a0] Op_K_printf : [expr_count = 17] [redir_type = ""] -| [ :0xfcc140] Op_no_op : -| [ :0xfcc1c0] Op_atexit : -| [ :0xfcc640] Op_stop : -| [ :0xfcc180] Op_no_op : -| [ :0xfcd150] Op_after_beginfile :
-| [ :0xfcc160] Op_no_op : -| [ :0xfcc1a0] Op_after_endfile : gawk>
exit
Esce dal debugger. Si veda la voce ‘quit’, più avanti in quest’elenco.
help
h
Stampa una lista di tutti i comandi del debugger di gawk
con un breve
sommario su come usarli. ‘help comando’ stampa l’informazione sul
comando comando.
list
[-
| +
| n | nome-file:
n | n–m | funzione]l
[-
| +
| n | nome-file:
n | n–m | funzione]Stampa le righe specificate (per default 15) dal file sorgente corrente
o il file chiamato nome-file. I possibili argomenti di list
sono i seguenti:
-
(Meno)Stampa righe prima delle ultime righe stampate.
+
Stampa righe dopo le ultime righe stampate.
list
senza argomenti fa la stessa cosa.
Stampa righe centrate attorno alla riga numero n.
Stampa righe dalla numero n alla numero m.
:
nStampa righe centrate attorno alla riga numero n nel file sorgente nome-file. Questo comando può cambiare il file sorgente corrente.
Stampa righe centrate attorno all’inizio della funzione function. Questo comando può cambiare il file sorgente corrente.
quit
q
Esce dal debugger. Fare il debug è divertente, ma noi tutti a volte dobbiamo far fronte ad altri impegni nella vita, e talvolta troviamo il bug e possiamo tranquillamente passare a quello successivo! Come abbiamo visto prima, se si sta eseguendo un programma, il debugger avverte quando si batte ‘q’ o ‘quit’, in modo da essere sicuri di voler realmente abbandonare il debug.
trace
[on
| off
]Abilita o disabilita la stampa continua delle istruzioni che si stanno per
eseguire, assieme alle righe di awk
che implementano.
L’impostazione di default è off
.
È auspicabile che la maggior parte dei “codici operativi” (o “opcode”)
in queste istruzioni siano sufficientemente autoesplicativi, e l’uso di
stepi
e nexti
mentre trace
è abilitato li renderà
familiari.
Precedente: Informazioni sul debugger, Su: Lista dei comandi di debug [Contenuti][Indice]