Fehler Flashcards
Welche Erwartungen hat man an ein Programm?
Das Programm erzeugt korrekte Ergebnisse für alle erlaubten Eingaben; gibt sinvolle Fehlermeldungen bei unerlaubten Eingaben aus; Hardware und Systemsoftware funktionieren korrekt; Terminierung nach Entdecken eines Fehlers ist erlaubt
Welche Ursachen für Fehler gibt es?
Unachtsamkeit bei Programmierung; Ungenauigkeiten in der Spezifikation; Abstimmungsprobleme bezüglich der Schnittstellen unterschiedlicher Module; Unvollständige Programme; unerwartete / fehlerhafte Eingaben und Argumente etc.
Welche Fehlerarten gibt es?
Compiler Fehler, Linker-Fehler, Laufzeit-Fehler, Logik-Fehler
Was sind Compiler-Fehler?
Falsche Syntax, Typfehler
Was sind Linker-Fehler?
Nicht gefundene Bibliothek, falsche Bibliothekversion
Was sind Laufzeit-Fehler?
Crash durch Rechner, Exception durch Bibliothek / Programm
Was sind Logik-Fehler?
Falsche Ergebnisse / Ausgaben; diese können meist erst viel später nach der Programmausführung entdeckt werden; können nicht vom Compiler gefunden werden
Von was wird der Typ im Allgemeinen geprüft?
Vom Compiler
Wie geht man bei fehlerhaften Argumenten um?
Beim Aufruf prüfen; Rückgabe der Fehlerwerte betrachten; Fehlerstatus betrachten; Exception auslösen
Was ist Exception?
Eine Ausnahmebehandlung, die Fehler in der try-catch-Methode behandelt. Sie “wirft” die Fehlermeldung in Form eines Fehlerobjekts an den zuständigen Exception-Handler im catch-Block weiter, welcher dann den Fehler behandelt
Was sind die Vorteile der Exception-Behandlung?
Die Behandlung kann nicht vergessen werden, da sonst ggf. das Programm terminiert; nahezu jede Fehlerart kann damit behandelt werden
Was sind die Nachteile der Exception-Behandlung?
Reaktion auf Fehler bleibt immer noch Aufgabe des Programmierers; normaler Programmablauf muss unterbrochen werden; Fehler sollte früh behandelt werden, damit der Weg zum normalen Programmablauf leicht bleibt
Was sind Bugs?
(Logik-)Fehler/Programmfehler, die ein unerwartetes Verhalten verursachen
Was ist eine Spezifikation?
Eine Beschreibung bzw Dokumentation über die Anforderungen bzw Erwartungen eines Programms z.B.
Wie korrigiert man Bugs?
Mithilfe von Debugging
Was versteht man unter Debugging?
Ein fehlerhaftes Verhalten des Programmes feststellen und zu reproduzieren; die Fehlerursache eingrenzen; Fehler im Programm beseitigen; Prüfen / testen, ob keine neuen Fehler entstanden sind
Welche Schwierigkeiten gibt es?
Jedes Programm hat Fehler; Fehlermöglichkeitenspektrum ist groß: manchmal schwer entdeckbar; beobachtetes Fehlverhalten kann erst viel später auftreten als die Ausführung der fehlerhaften Programmstelle oder kann an ganz anderer Stelle stattfinden
Wie läuft der Debugging-Prozess ab?
Erstmal muss das Programm compilieren und dann den Compiler-Fehler beseitigen (Warnungen des Compilers ansehen und beseitigen). Anschließend die Programmteile Schritt für Schritt gedanklich ausführen, selbst wenn schon klar ist was das Programm macht. Dabei muss man genau hinsehen was passiert und genaue Einblicke in das Programm gewinnen. Anschließend kann man auch einen Debugger z.B. “gdb” benutzen
Was sind die Grundregeln zur Fehlervermeidung?
Eine genaue Spezifikation der erwarteten Funktionen erstellen; Code dokumentieren; Annahmen über Ein- Ausgabe prüfen und dokumentieren; Programme testen (garantiert Freiheit von Logikfehlern); lesbaren Code schreiben