Questo argomento non è stato ancora valutato - Valuta questo argomento

Aggiunta di istruzioni di analisi al codice dell'applicazione

Visual Studio .NET 2003

I metodi utilizzati con maggiore frequenza per l'analisi sono i metodi per la scrittura dell'output nei listener: Write, WriteIf, WriteLine, WriteLineIf, Assert e Fail. Questi metodi possono essere suddivisi in due categorie: Write, WriteLine e Fail generano tutti un output in modo non condizionale, mentre WriteIf, WriteLineIf e Assert verificano una condizione Boolean e la scrittura avviene o meno in base al valore di tale condizione. WriteIf e WriteLineIf generano output se la condizione è true, mentre Assert genera output se la condizione è false.

Quando si progetta la strategia di analisi e di debug è necessario stabilire come si desidera visualizzare l'output. Più istruzioni Write costituite da informazioni non correlate creeranno un log difficile da leggere. D'altra parte, se si utilizza WriteLine per inserire istruzioni correlate in righe separate può essere difficile distinguere le informazioni che appartengono allo stesso gruppo. In genere è opportuno utilizzare più istruzioni Write quando si desidera associare informazioni da diverse origini, per creare un singolo messaggio informativo, e l'istruzione WriteLine quando si desidera creare un unico messaggio completo.

Per scrivere una riga completa

  • Chiamare il metodo WriteLine o il metodo WriteLineIf.

    Viene inserito un ritorno a capo alla fine del messaggio restituito da questo metodo, in modo che il messaggio successivo restituito da Write, WriteIf, WriteLine o WriteLineIf cominci nella riga successiva:

    ' Visual Basic
    Dim errorFlag As Boolean = False
    Trace.WriteLine("Error in AppendData procedure.")
    Trace.WriteLineIf(errorFlag, "Error in AppendData procedure.") 
    
    // C#
    bool errorFlag = false;
    System.Diagnostics.Trace.WriteLine ("Error in AppendData procedure.");
    System.Diagnostics.Trace.WriteLineIf(errorFlag, 
       "Error in AppendData procedure.");
    

Per scrivere una riga parziale

  • Chiamare il metodo Write o il metodo WriteIf.

    Il messaggio successivo, restituito da Write, WriteIf, WriteLine o WriteLineIf inizierà nella stessa riga del messaggio restituito dall'istruzione Write o WriteIf:

    ' Visual Basic
    Dim errorFlag As Boolean = False
    Trace.WriteIf(errorFlag, "Error in AppendData procedure.")
    Debug.WriteIf(errorFlag, "Transaction abandoned.")
    Trace.Write("Invalid value for data request")
    
    // C#
    bool errorFlag = false;
    System.Diagnostics.Trace.WriteIf(errorFlag, 
       "Error in AppendData procedure.");
    System.Diagnostics.Debug.WriteIf(errorFlag, "Transaction abandoned.");
    Trace.Write("Invalid value for data request");
    

Per verificare l'esistenza di determinate condizioni prima o dopo l'esecuzione di un metodo

  • Chiamare il metodo Assert.
    ' Visual Basic
    Dim I As Integer = 4
    Trace.Assert(I = 5, "I is not equal to 5.")
    
    // C#
    int I = 4;
    System.Diagnostics.Trace.Assert(I == 5, "I is not equal to 5.");
    
    Nota   È possibile utilizzare il metodo Assert sia con l'analisi che con il debug. In questo esempio viene restituito lo stack di chiamate a ogni listener nell'insieme Listeners. Per ulteriori informazioni, vedere Asserzioni nel codice gestito e Metodo Debug.Assert.

Controllo dei metodi Write condizionali tramite le opzioni

È possibile scrivere l'output di analisi in base allo stato delle opzioni. Un'opzione BooleanSwitch è una semplice opzione di attivazione/disattivazione e un'opzione TraceSwitch è un'opzione con impostazioni a più livelli. Per ulteriori informazioni, vedere Opzioni di analisi.

È possibile utilizzare i metodi WriteIf e WriteLineIf per verificare una particolare opzione e scrivere un messaggio, se necessario. Per utilizzare BooleanSwitch per la scrittura di informazioni di analisi, utilizzarne il campo Enabled in un'istruzione If o in un'istruzione WriteIf. Per alcuni esempi, vedere Proprietà BooleanSwitch.Enabled negli argomenti di riferimento su .NET Framework. Per utilizzare TraceSwitch per scrivere informazioni di analisi, utilizzare la proprietà Level di TraceSwitch. Per alcuni esempi, vedere Proprietà TraceSwitch.Level negli argomenti di riferimento su .NET Framework.

Nell'esempio che segue viene utilizzata la proprietà Enabled di un BooleanSwitch chiamato dataSwitch per determinare se scrivere o meno una riga.

' Visual Basic
Trace.WriteLineIf(dataSwitch.Enabled, "Starting connection procedure")

// C#
System.Diagnostics.Trace.WriteLineIf(dataSwitch.Enabled, 
   "Starting connection procedure");

TraceSwitch fornisce più livelli di impostazione ed espone un insieme di proprietà che corrispondono a questi livelli. Perciò le proprietà Boolean quali TraceError, TraceWarning, TraceInfo e TraceVerbose possono essere sottoposte a verifica come parte di un'istruzione WriteIf o WriteLineIf. Tramite il codice di questo esempio vengono scritte le informazioni specificate solo se TraceSwitch viene impostato sul livello di analisi Error o superiore:

' Visual Basic
Trace.WriteLineIf(myTraceSwitch.TraceError, "Error 42 occurred")

// C#
System.Diagnostics.Trace.WriteLineIf(myTraceSwitch.TraceError, 
   "Error 42 occurred");
Nota   Quando si esegue la verifica di un'opzione TraceSwitch, il livello viene considerato true se è uguale o maggiore del livello per cui si esegue la verifica.

Nell'esempio precedente viene sempre chiamato il metodo WriteLineIf quando è attivata l'analisi. Di conseguenza, in base all'esempio deve venire eseguito sempre qualsiasi codice necessario per valutare il secondo argomento per WriteLineIf. Tuttavia, si ottengono in genere prestazioni migliori effettuando prima la verifica di un'opzione BooleanSwitch, quindi chiamando il metodo generico Trace.Write solo se la verifica ha avuto esito positivo, utilizzando il codice seguente:

' Visual Basic
If MyBooleanSwitch.Enabled Then
   Trace.WriteLine("Error 42 occured")
End If

// C#
if (MyBooleanSwitch.Enabled)
{
   System.Diagnostics.Trace.WriteLine("Error 42 occured");
}

Se si verifica il valore Boolean prima di chiamare il metodo di analisi, si evita l'esecuzione di codice non necessario, poiché tramite l'analisi vengono valutati sempre tutti i parametri di WriteLineIf. Con questa tecnica si potranno migliorare le prestazioni solo disattivando TraceSwitch durante la modalità di funzionamento normale dell'applicazione. Attivando TraceSwitch, sarà necessario valutare tutti i parametri di WriteLineIf, dilatando di conseguenza il tempo complessivo di esecuzione dell'applicazione.

Vedere anche

Introduzione alla strumentazione e all'analisi | Analisi e strumentazione di applicazioni in Visual Basic e Visual C# | Configurazione delle opzioni di analisi | Opzioni di analisi | Listener di analisi | Metodo Debug.WriteIf | Metodo Debug.WriteLineIf| Metodo Trace.WriteIf | Metodo Trace.WriteLineIf

Il documento è risultato utile?
(1500 caratteri rimanenti)
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?