Scopo
Questa proprietà rappresenta il numero massimo di cicli da eseguire prima di considerare l'applicazione entrata in un loop infinito.
Quando un ciclo (for-each o while) esegue più di DTTMaxLoopCycles cicli, il loop viene interrotto generando un errore. Questo comportamento permette al modulo di debug di identificare un ciclo infinito.
Di solito questa proprietà viene lasciata al valore di default; può essere utilizzata per aumentare il numero di cicli permessi nell'applicazione compilata con il debug attivo, per analizzare il comportamento di procedure molto iterative.
Sintassi
Quando letta
Ritorna il massimo numero di cicli da eseguire prima che venga generato l'errore di ciclo infinito.
Quando impostata
Imposta il massimo numero di cicli da eseguire prima che venga generato l'errore di ciclo infinito.
Esempio di codice
// Imposta i parametri del modulo di Trace
// ***************************************
public void DTTSettings.ImpostaDTT()
{
int idx = 0 //
string NomeCategoria = "" //
//
// Imposto il debug ai valori selezionati dall'utente
EsempiGL.DTTLoggedLoops := DTTSettings.DTTSettingLoggedLoops
EsempiGL.DTTMaxLoopCycles := DTTSettings.DTTSettingMaxLoopCycles
EsempiGL.DTTMaxRecords := DTTSettings.DTTSettingMaxRecords
EsempiGL.DTTMaxStackLoops := DTTSettings.DTTSettingMaxStackLoops
//
// Fino a 1.000
while idx <= C1000
{
// Scrivo l'indice nel debug
EsempiGL.DTTLogMessage(ToString(idx), ??, ??)
//
idx := idx + ONE
}
//
//
select into variables
set NomeCategoria := NomeCategoria
from
Categorie // Master Table
//
// Richiamo questa funzione
this.ImpostaDTT()
}
- Se l'applicazione è compilata solo in debug il valore predefinito per questa proprietà è 1000. Quindi normalmente un ciclo che compie più di 1000 iterazioni viene fermato e viene memorizzato un errore nel debug. L'applicazione continuerà a funzionare. Se invece è compilata anche con il trace attivo il valore predefinito è 1000000.
- Nel caso in cui si debba effettuare il debug di una procedura che deve compiere più di 1000 cicli è possibile incrementare il valore della proprietà.
- Non tutti i cicli compiuti dall'applicazione vengono mostrati nel debug, ma solamente tanti quanti indicati dalla proprietà DTTLoggedLoops.
- La capacità di riconoscere e quindi di fermare un ciclo infinito deriva dal modulo di debug. Se si compila un'applicazione senza debug questa capacità è assente. E' quindi possibile che un ciclo entri in loop senza uscirne.
Ultima modifica: 25/10/2016 / Validità: da 6.7.2950