C#:
Einsatz eines Debuggers

Wie:

Stellen Sie sich vor, Sie haben ein kleines Programm, das nicht richtig funktioniert:

static void Main()
{
    int result = Sum(1, 2);
    Console.WriteLine(result);
}

static int Sum(int a, int b)
{
    return a + a; // Ups, sollte a + b sein
}

Verwenden Sie den Debugger von Visual Studio, um einen Haltepunkt zu setzen, indem Sie auf den linken Rand neben return a + a; klicken. Wenn Sie das Programm ausführen (mit F5), wird die Ausführung dort pausieren. Fahren Sie mit der Maus über Variablen, um deren Werte zu inspizieren, oder nutzen Sie das Immediate-Fenster, um Ausdrücke zu bewerten. Sie werden sehen, dass a 1 und b 2 ist, aber a + a ergibt nicht unsere erwartete Summe. Ändern Sie es zu a + b, fahren Sie mit der Ausführung fort (F5), und voilà, die Konsole gibt 3 aus.

Tiefergehend

Die Geschichte des Debuggings reicht zurück bis in die 1940er Jahre, als ein echter Bug (eine Motte) in einem frühen Computer gefunden wurde. Die Debugger von heute, wie der in Visual Studio, bieten eine Reihe leistungsstarker Funktionen, einschließlich Haltepunkten, schrittweiser Ausführung, Beobachtungsfenstern und vieles mehr.

Alternativen zum Debugger von Visual Studio umfassen Open-Source-Optionen wie GDB für C-artige Sprachen oder pdb für Python, sowie plattformübergreifende IDEs wie JetBrains Rider oder VS Code, die Debugging-Tools für C# und andere Sprachen bieten.

Wenn Sie in die Implementierung eines Debuggers eintauchen, sehen Sie ein Programm, das sich an den Prozess Ihrer Anwendung anhängt. Es interpretiert Maschinencode, verwaltet den Speicherzustand und steuert den Ausführungsfluss. Das ist anspruchsvolles Material, das für effektives Debugging entscheidend ist, weshalb der Debug-Modus oft langsamer läuft als der Release-Modus, in dem diese Haken nicht existieren.

Siehe auch