Exercice : journalisation et suivi
Maintenant que l’application est en cours de développement, il est judicieux d’ajouter d’autres diagnostics à la logique pour aider les développeurs à mesure qu’ils ajoutent de nouvelles fonctionnalités. Nous pouvons utiliser nos nouvelles connaissances liées aux diagnostics de débogage pour accomplir cette tâche.
Écrire dans la console de débogage
Avant de déboguer l’application, nous allons ajouter d’autres diagnostics de débogage. Ces derniers vont faciliter le diagnostic de l’application pendant son exécution en mode de débogage.
En haut du fichier Program.cs
, nous allons ajouter une nouvelle instruction using
pour afficher System.Diagnostics
afin d’utiliser les méthodes Debug
.
using System.Diagnostics;
Ajoutez une instruction WriteLine
au début de la méthode Fibonacci
pour obtenir plus de clarté lors du débogage à l’aide du code.
Debug.WriteLine($"Entering {nameof(Fibonacci)} method");
Debug.WriteLine($"We are looking for the {n}th number");
À la fin de notre boucle for
, nous pouvons imprimer chaque valeur. Nous pouvons également utiliser une instruction d’impression conditionnelle à l’aide WriteIf
ou WriteLineIf
pour ajouter une ligne d’impression uniquement lorsque sum
a pour valeur 1 à la fin de la boucle :
for (int i = 2; i <= n; i++)
{
sum = n1 + n2;
n1 = n2;
n2 = sum;
Debug.WriteLineIf(sum == 1, $"sum is 1, n1 is {n1}, n2 is {n2}");
}
Déboguez l’application et vous devriez obtenir la sortie suivante :
Entering Fibonacci method
We are looking for the 5th number
sum is 1, n1 is 1, n2 is 1
Vérifier les conditions avec Assert
Dans certains cas, vous pouvez arrêter toute l’application en cours d’exécution lorsqu’une condition spécifique n’est pas remplie. En utilisant Debug.Assert
, vous pouvez vérifier une condition et générer des informations supplémentaires sur l’état de l’application. Nous allons ajouter une vérification juste avant l’instruction return pour s’assurer que n2 est 5.
// If n2 is 5 continue, else break.
Debug.Assert(n2 == 5, "The return value is not 5 and it should be.");
return n == 0 ? n1 : n2;
Notre logique d’application est déjà correcte, nous allons donc mettre à jour notre Fibonacci(5);
vers Fibonacci(6);
, ce qui va générer un autre résultat.
Déboguez l’application. Quand Debug.Assert
est exécuté dans le code, le débogueur arrête l’application pour vous permettre d’inspecter les variables, la fenêtre Espion, la pile des appels, etc. Il renvoie également le message à la console de débogage.
---- DEBUG ASSERTION FAILED ----
---- Assert Short Message ----
The return value is not 5 and it should be.
---- Assert Long Message ----
at Program.<<Main>$>g__Fibonacci|0_0(Int32 n) in C:\Users\Jon\Desktop\DotNetDebugging\Program.cs:line 23
at Program.<Main>$(String[] args) in C:\Users\Jon\Desktop\DotNetDebugging\Program.cs:line 3
Arrêtez le débogage, puis exécutez l’application sans débogage en entrant la commande suivante dans le terminal.
dotnet run
L’application s’arrête après l’échec de l’assertion et des informations ont été consignées dans la sortie de l’application.
Process terminated. Assertion failed.
The return value is not 5 and it should be.
at Program.<<Main>$>g__Fibonacci|0_0(Int32 n) in C:\Users\Jon\Desktop\DotNetDebugging\Program.cs:line 23
at Program.<Main>$(String[] args) in C:\Users\Jon\Desktop\DotNetDebugging\Program.cs:line 3
À présent, exécutons l’application dans la configuration Release
à l’aide de la commande suivante dans le terminal.
dotnet run --configuration Release
L’application s’exécute correctement jusqu’à la fin, car nous ne sommes plus dans la configuration Debug
.
Félicitations, vous avez correctement et efficacement débogué du code à l’aide de fonctionnalités de .NET, comme Debug.WriteLine
et Debug.Assert
. Bravo !