Leçon 16 - Debug et Débogage
Apprenez les techniques essentielles pour identifier et corriger les bugs dans votre code.
Qu'est-ce que le débogage ?
Le débogage consiste à trouver et corriger les erreurs dans votre code. Les bugs peuvent être des erreurs de logique, de calcul, ou des plantages.
Méthode 1 : Console.WriteLine
La méthode la plus simple pour vérifier les valeurs :
C#
static double CelsiusVersFahrenheit(double celsius)
{
Console.WriteLine($"[DEBUG] Entrée: {celsius}°C");
double fahrenheit = (celsius * 9/5) + 32;
Console.WriteLine($"[DEBUG] Sortie: {fahrenheit}°F");
return fahrenheit;
}
Méthode 2 : Logger simple
Créez un système de log pour mieux organiser vos messages de debug :
C#
static class Logger
{
public static void Debug(string message)
{
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine($"[DEBUG] {message}");
Console.ResetColor();
}
public static void Error(string message)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"[ERROR] {message}");
Console.ResetColor();
}
public static void Info(string message)
{
Console.WriteLine($"[INFO] {message}");
}
}
// Utilisation
static void Diviser(double a, double b)
{
Logger.Info($"Division de {a} par {b}");
if (b == 0)
{
Logger.Error("Division par zéro !");
return;
}
double resultat = a / b;
Logger.Debug($"Résultat: {resultat}");
}
Méthode 3 : Try-Catch pour trouver les erreurs
Utilisez try-catch pour capturer et analyser les erreurs :
C#
static void TesterCalcul()
{
try
{
Console.Write("Entrez un nombre: ");
string input = Console.ReadLine();
Logger.Debug($"Input reçu: '{input}'");
int nombre = int.Parse(input);
int resultat = 100 / nombre;
Console.WriteLine($"Résultat: {resultat}");
}
catch (FormatException ex)
{
Logger.Error($"Format invalide: {ex.Message}");
}
catch (DivideByZeroException)
{
Logger.Error("Division par zéro détectée");
}
}
🐛 Conseils de débogage :
- Reproduisez le bug : Trouvez comment déclencher l'erreur
- Isolez le problème : Testez section par section
- Vérifiez les valeurs : Utilisez Console.WriteLine ou Logger
- Lisez les messages d'erreur : Ils donnent souvent la solution
Exercice pratique
Déboguez cette fonction qui calcule un prix avec remise :
C#
// ❌ Code avec bug
static decimal CalculerPrixFinal(decimal prix, decimal remise)
{
decimal prixFinal = prix - remise; // Bug ici!
return prixFinal;
}
C#
// ✅ Code corrigé avec débogage
static decimal CalculerPrixFinal(decimal prixBase, decimal pourcentageRemise)
{
Logger.Debug($"Prix base: {prixBase:C}, Remise: {pourcentageRemise}%");
// Validation des entrées
if (prixBase < 0)
{
Logger.Error("Prix négatif détecté");
return 0;
}
// Calcul correct: remise en pourcentage
decimal montantRemise = prixBase * (pourcentageRemise / 100);
decimal prixFinal = prixBase - montantRemise;
Logger.Debug($"Montant remise: {montantRemise:C}");
Logger.Info($"Prix final: {prixFinal:C}");
return prixFinal;
}
// Test
static void Main(string[] args)
{
// Prix: 100€, Remise: 20%
decimal prix = CalculerPrixFinal(100, 20);
Console.WriteLine($"À payer: {prix:C}"); // Résultat: 80€
}
Le bug : La remise était soustraite directement au lieu d'être calculée en pourcentage !