| dalla versione 6.7.2950 - modificato il 13/07/2008 - link - english
|
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.
Applicazione.DTTMaxLoopCycles := massimo numero cicli
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.
Note
-
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.
public void DTTSettings.ImpostaDTT()
{
int idx = 0
string NomeCategoria = ""
EsempiGL.DTTLoggedLoops := DTTSettings.DTTSettingLoggedLoops
EsempiGL.DTTMaxLoopCycles := DTTSettings.DTTSettingMaxLoopCycles
EsempiGL.DTTMaxRecords := DTTSettings.DTTSettingMaxRecords
EsempiGL.DTTMaxStackLoops := DTTSettings.DTTSettingMaxStackLoops
while idx <= C1000
{
EsempiGL.DTTLogMessage(ToString(idx), ??, ??)
idx := idx + ONE
}
select into variables
set NomeCategoria := NomeCategoria
from
Categorie
this.ImpostaDTT()
}
Cosa ne pensi?
Ti sono rimaste delle domande su punti che questo articolo non ha trattato? Pensi che sia utile aggiungere una nota all'articolo? Aiutaci a migliorare la documentazione di Instant Developer scrivendo il tuo commento nei campi qui sotto.