Condividi tramite


Esaminare l'app con il debug cronologico in IntelliTrace in Visual Studio (C#, Visual Basic, C++)

È possibile usare il debug cronologico per spostarsi indietro e avanti nell'esecuzione dell'applicazione ed esaminarne lo stato.

È possibile utilizzare IntelliTrace in Visual Studio Enterprise edition (ma non le edizioni Professional o Community).

Iniziamo con un semplice programma che dispone di un bug. Aggiungere il codice seguente al file App.xaml.cs nell'applicazione:

static void Main(string[] args)
{
    int testInt = 0;
    int resultInt = AddIterative(testInt);
    Console.WriteLine(resultInt);
}
private static int AddIterative(int j)
{
    for (int i = 0; i < 20; i++)
    {
        j = AddInt(j);
    }
    return j;
}

private static int AddInt(int add)
{
    if (add == 10)
    {
        return add += 25;
    }
    return ++add;
}

Si presuppone che il valore previsto di resultInt dopo la chiamata AddIterative() è pari a 20 (il risultato di incremento testInt 20 volte). Si presuppone anche che non sia possibile visualizzare il bug in AddInt(). Ma il risultato è in realtà 44. Come è possibile individuare i bug senza scorrere AddIterative() 10 volte? È possibile utilizzare il debug cronologico per individuare l'errore in modo più semplice e rapido. In tal caso, eseguire la procedura seguente:

  1. In Strumenti > Opzioni > IntelliTrace > Generale verificare che IntelliTrace sia abilitato e selezionare Eventi IntelliTrace e informazioni sulle chiamate. Se non si seleziona questa opzione, non sarà in grado di visualizzare la barra di navigazione (come illustrato di seguito).

  2. Impostare un punto di interruzione nella riga Console.WriteLine(resultInt); .

  3. Avviare il debug. Il codice viene eseguito fino al punto di interruzione. Nella finestra Variabili locali verificare che il valore corrente di resultInt sia 44.

  4. Aprire la finestra Strumenti di diagnostica (Debug > Mostra strumenti di diagnostica). La finestra codici dovrebbe risultare simile alla seguente:

    Code window at the breakpoint

  5. Verrà visualizzata una doppia freccia accanto al margine sinistro, appena sopra il punto di interruzione. Quest'area viene chiamata barra di navigazione e viene usata per il debug cronologico. Fare clic sulla freccia.

    Nella finestra del codice, si noterà che la riga di codice precedente (int resultInt = AddIterative(testInt);) è di colore rosa. Sopra la finestra si noterà un messaggio che indica che ci si trova nel debug cronologico.

    La finestra del codice è ora simile al seguente:

    code window in historical debugging mode

  6. È ora possibile eseguire l'istruzione nel AddIterative() metodo (F11 o il pulsante Esegui istruzione nella barra di spostamento). Avanti (F10 o Vai alla chiamata successiva nella barra di spostamento). La riga rosa contiene ora il j = AddInt(j); riga. F10 in questo caso non passa alla riga di codice successiva. Al contrario, i passaggi per la successiva chiamata di funzione. Il debug cronologico consente di passare da una chiamata a altra e ignora le righe di codice che non includono una chiamata di funzione.

  7. Eseguire un'istruzione nel metodo AddInt() Verrà visualizzato immediatamente il bug nel codice.

Questa procedura è solo un breve accenno delle operazioni che si possono eseguire con il debug cronologico.