Snippet: funzione di debug

Published on

in

Una delle cose più complesse negli script di SL è quella di affrontare la fase di debug. Ho scritto una minuscola funzione che mi consente il debug in maniera rapida e semplice e credo sia utile condividere questa riga di codice in quanto mi ha fatto risparmiare un sacco di tempo:

[sourcecode language=”java”]
integer DEBUG = TRUE;
debug(list _lst)
{
if(DEBUG) llOwnerSay(llDumpList2String(_lst," "));
}
[/sourcecode]

La comodità è che possiamo chiamarla senza alcun casting dei dati come da esempio:

[sourcecode language=”java”]
debug( ["x=",x,"y=",y,"z=",z,"vettore=",vector] );
[/sourcecode]

Comodo no?

Se vogliamo effettuare un debug in un ciclo:

[sourcecode language=”java”]
list deb=[];
for( i=0; i<l; i++) {
//…..
deb += ["i vale",i, "pippo=",pippo];
}
debug(deb);
[/sourcecode]

Unica accortezza deve essere usata per le liste:
[sourcecode language=”java”]
list giorni=["LU","MA","ME","GI","VE","SA","DO"];
debug( ["giorni vale"] + giorni + ["i=",i] );
[/sourcecode]

Questo perché una lista non può contenere liste e scrivendo:
[sourcecode language=”java”]
debug(  ["giorni vale", giorni,"i=",i]);
[/sourcecode]

otterremmo un errore di runtime

Ora un altro trucco per attivare e disattivare il debug senza modificare lo script. Personalmente utilizzo il touch verificando il tempo di pressione del tasto del mouse. Se è corto (diciamo < 2 secondi) faccio le cose che dovrei fare al touch, se supera quel tempo cambio stato a DEBUG:

 
[sourcecode language=”java”]
integer DEBUG=FALSE;
default
{
state_entry() { }

// quando inizia il touch resetto il time
touch_start(integer total_number) { float x = llGetAndResetTime(); }

// quando il tasto viene rilasciato gestisco l’evento
touch_end(integer total_number)
{
// se sono passati più di due secondi e chi tocca è l’owner
if( llGetTime() > 2.0 && llGetOwner() == llDetectedKey(0) ) {
if( DEBUG ) { DEBUG = FALSE; llOwnerSay("DEBUG OFF"); }
else { DEBUG = TRUE; llOwnerSay("DEBUG ON"); }
} else {
// altro codice touch
}
}
}
[/sourcecode]

Spero di essere stato minimalisticamente utile a qualcuno

Vittorio Bing

Leave a Reply

Discover more from Salahzar's Weblog

Subscribe now to keep reading and get access to the full archive.

Continue reading