English
Instant Developer Foundation Documentazione
  • Reference Librerie
  • Libreria Client
  • Libreria Applicazione
  • Debug, Trace & Test
  • Debug

DTT Max Loop Cycles

proprietà copia link

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

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.

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

Vedi anche

  • DTT Logged Loops (proprietà)

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum