Partager via


Inspecter votre application avec le débogage historique IntelliTrace dans Visual Studio (C#, Visual Basic, C++)

Vous pouvez utiliser le débogage historique pour parcourir l’exécution de votre application et inspecter son état.

Vous pouvez utiliser IntelliTrace dans Visual Studio Enterprise Edition, mais pas dans les éditions Professional ou Community.

Commençons par un programme simple qui contient un bogue. Dans une application de console C#, ajoutez le code suivant :

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;
}

Nous partons du principe que la valeur attendue de resultInt après l’appel de AddIterative() est 20 (le résultat de 20 incrémentations de testInt). (Nous partons également du principe que vous ne voyez pas le bogue dans AddInt()). Mais le résultat est bien 44. Comment trouver le bogue sans parcourir 10 fois AddIterative() ? Nous pouvons utiliser le débogage d’historique pour simplifier et accélérer l’identification du bogue. Voici comment procéder :

  1. Dans Outils > Options > IntelliTrace > Général, assurez-vous qu’IntelliTrace est activé et sélectionnez Événements IntelliTrace et informations d’appel. Si vous ne sélectionnez pas cette option, vous ne verrez pas la marge de navigation (comme expliqué ci-dessous).

  2. Définissez un point d’arrêt sur la ligne Console.WriteLine(resultInt); .

  3. Démarrez le débogage. Le code s'exécute jusqu'au point d'arrêt. Dans la fenêtre Variables locales, vous pouvez constater que la valeur de resultInt est 44.

  4. Ouvrez la fenêtre Outils de diagnostic (Déboguer > Afficher les outils de diagnostic). La fenêtre de code doit ressembler à ce qui suit :

    Code window at the breakpoint

  5. Vous devez voir une double flèche en regard de la marge de gauche, juste au-dessus du point d'arrêt. Cette zone est appelée « marge de navigation » et est utilisée pour le débogage d’historique. Cliquez sur la flèche.

    Dans la fenêtre de code, vous devez voir que la ligne de code précédente (int resultInt = AddIterative(testInt);) est de couleur rose. Au-dessus de la fenêtre, vous devez voir un message indiquant que vous êtes en mode de débogage d’historique.

    La fenêtre de code doit maintenant ressembler à ceci :

    code window in historical debugging mode

  6. À présent, vous pouvez effectuer un pas à pas détaillé dans la méthode AddIterative() (appuyez sur la touche F11 ou sur le bouton Pas à pas détaillé dans la marge de navigation). Avancez (touche F10 ou bouton Aller à l’appel suivant dans la marge de navigation). Le trait rose est désormais sur la ligne j = AddInt(j);. Appuyer sur la touche F10 dans ce cas ne permet pas d’accéder à la ligne de code suivante. En fait, vous accédez à l'appel de fonction suivant. Le débogage d'historique permet de naviguer d'un appel à l'autre. Il ignore les lignes de code qui n'incluent pas d'appel de fonction.

  7. Maintenant, effectuez un pas à pas détaillé de la méthode AddInt(). Vous devez voir immédiatement le bogue dans ce code.

Cette procédure ne présente que succinctement ce que vous pouvez faire avec le débogage d’historique.