8.1 Auftreten von Bugs
Software-Debugging ist der Prozess der Suche und Behebung von Fehlern oder Bugs in einem Programm. Dieser Prozess ist der spannendste und wichtigste Teil der Softwareentwicklung und hilft sicherzustellen, dass Programme korrekt funktionieren.
Geschichte des Begriffs "Bug"
Der Begriff "Bug" im Kontext von Computerprogrammen wurde erstmals in den 1940er Jahren verwendet. Obwohl das Konzept der "Bugs" schon vor den Computern existierte, um mechanische Defekte in verschiedenen Geräten zu bezeichnen.
Der erste dokumentierte Fall der Nutzung des Begriffs "Bug" in der Computertechnik war mit einem Team, das 1947(!) an der Harvard-Universität am Computer Mark II arbeitete. Das Team stellte fest, dass eines der Relais der Maschine nicht funktionierte, weil eine Motte hineingeraten war. Sie entfernten das Insekt und notierten es im Tagebuch als den "ersten tatsächlichen Fall eines gefundenen Insekts" (wörtlicher Bug).
Obwohl dies nicht der erste Fall der Nutzung des Begriffs "Bug" zur Bezeichnung eines Fehlers war, wurde dieser Vorfall bekannt und trug zur Popularisierung des Begriffs "Bug" bei.
Programm-Debugging
Debugging ist der Prozess der Suche, Diagnose und Behebung von Bugs in der Software. Der Debugging-Prozess umfasst mehrere Schritte:
- Fehlererkennung: Bestimmung von Symptomen, die auf einen Fehler im Programm hinweisen.
- Fehlerreproduktion: Schaffung von Bedingungen, unter denen der Fehler erneut auftritt, um seine Natur besser zu verstehen.
- Problemdiagnose: Nutzung verschiedener Tools und Methoden zur Analyse des Codes und zur Ursachensuche des Fehlers.
- Fehlerbehebung: Änderungen am Code vornehmen, um den Fehler zu beheben.
- Testen: Überprüfung der Behebung und Testen des Programms, um sicherzustellen, dass der Fehler behoben ist und keine neuen Probleme aufgetreten sind.
Also Bug ist ein allgemeiner Begriff für jegliche Fehler in Programmen, und Debug (de-bug) ist der Prozess der Erkennung und Behebung dieser Fehler.
8.2 Werkzeuge und Methoden der Fehlerbehebung
Logging
Das Hinzufügen von Logs in den Programmcode ermöglicht es, die Ausführung zu verfolgen und
Informationen über den Zustand von Variablen und Operationen an verschiedenen Stellen der Programmausführung zu erhalten. Für das Logging gibt es in Python eine großartige Bibliothek —
logging
.
Beispiel der Nutzung von Logging:
import logging
# Konfiguration des Loggings für die Ausgabe von Debug-Informationen
logging.basicConfig(level=logging.DEBUG)
def divide(a, b):
# Protokollierung des Versuchs der Teilung
logging.debug(f"Teile {a} durch {b}")
if b == 0:
# Protokollierung des Fehlers, wenn b gleich 0 ist
logging.error("Versuch der Teilung durch Null!")
return None
# Führe die Teilung aus, wenn b nicht gleich 0 ist
return a / b
result = divide(10, 2)
print(result)
Verwendung von Debuggern
Debugger sind Werkzeuge, die es Entwicklern ermöglichen, das
Programm schrittweise auszuführen, Haltepunkte (breakpoints)
zu setzen, die
Werte von Variablen zu überprüfen und diese während der Programmausführung zu ändern.
Beliebte Debugger:
- GDB: GNU Debugger für C, C++ und andere Programmiersprachen.
- PDB: Eingebauter Python-Debugger.
- Visual Studio Debugger: Debugger, integriert in Microsoft Visual Studio.
- PyCharm Debugger: Debugger, integriert in die IDE PyCharm für Python.
Beispiel der Nutzung von PDB
import pdb
def faulty_function(a, b):
pdb.set_trace() # Setzen eines Haltepunkts
result = a / b
return result
faulty_function(10, 0)
Wenn das Programm pdb.set_trace()
erreicht, stoppt es, und du kannst
Debugger-Befehle wie
next
(nächster Schritt), print
(Wert einer
Variable ausgeben) und andere ausführen.
Wir werden das Debugging von Programmen am Beispiel des Debuggers in PyCharm lernen.
8.3 Verwendung von Debug
Generell umfasst Debug die aktive Nutzung von Debug-Werkzeugen und -Praktiken zur Erkennung und Behebung von Fehlern.
Setzen von Haltepunkten: Setze Haltepunkte im Code, um die Programmausführung an den interessierenden Stellen zu stoppen.
Schrittweise Ausführung: Führe das Programm schrittweise aus, und beobachte die Änderungen des Programmzustands und der Variablenwerte.
Analyse von Variablen: Untersuche die Werte von Variablen und Ausdrücken in verschiedenen Phasen der Programmausführung, um fehlerhafte Daten oder logische Fehler zu erkennen.
Fehlerbehebung: Nimm Änderungen am Code vor, um die gefundenen Fehler zu beheben.
Erneutes Testen: Nach der Fehlerbehebung teste das Programm, um sicherzustellen, dass der Fehler beseitigt ist und keine neuen Probleme entstanden sind.
Sieht einfach aus, nicht wahr? In der nächsten Vorlesung werden wir alle Schritte im Detail durchgehen :)
GO TO FULL VERSION