Warum Programme Abstürzen

Warum Programme Abstürzen
Warum Programme Abstürzen

Video: Warum Programme Abstürzen

Video: Warum Programme Abstürzen
Video: Mensch gegen Computer: Der Beinahe-Absturz einer Lufthansa-Maschine 2024, November
Anonim

Die Vielfalt der heute mit Hilfe von Personalcomputern gelösten Aufgaben wird durch die Existenz einer riesigen Menge von Anwendungsprogrammen bereitgestellt. Der Komfort der Arbeit mit der Software hängt weitgehend von ihrer Zuverlässigkeit ab, die sich in Abwesenheit von Notfallsituationen ausdrückt. Viele Programme stürzen jedoch im ungünstigsten Moment ab. Wieso den?

Warum
Warum

Der Ausnahmemechanismus wird verwendet, um spezielle, abnormale oder fehlerhafte Situationen zu verfolgen und zu behandeln, die während des Betriebs von Computerprogrammen unter der Kontrolle moderner Betriebssysteme auftreten. Ausnahmen können Hardware (vom Prozessor ausgelöst) und Software (von der Anwendung selbst oder einer externen Plug-in-Komponente) sein.

Unabhängig vom Typ kann die Ausnahme abgefangen und korrekt behandelt werden. Nicht abgefangene Ausnahmen werden an den Root-Laufzeitbibliothekshandler oder einen im Betriebssystem installierten Handler gesendet. In diesem Fall stürzt das Programm mit einer Meldung oder einem abnormalen Beendigungsfenster (in Windows) ab. Wenn der Betriebssystem-Handler nicht funktionierte (z. B. absichtlich entfernt wurde), stürzt das Programm "leise ab". Daher stürzen Programme aufgrund von Ausnahmen ab, die nicht behandelt werden können. Die Gründe für das Auftreten von Ausnahmen sind unterschiedlich.

In den allermeisten Fällen stürzen Programme aufgrund der Ausführung ihres eigenen Codes ab, der explizite oder implizite Implementierungsfehler enthält. Die Liste der möglichen Ursachen für Notfälle ist sehr lang. Dies sind sowohl klassische Fehler bei Operationen auf Gleitkommazahlen (zum Beispiel Division durch 0) als auch Fehler bei der Arbeit mit dem Speicher (Lesen oder Schreiben außerhalb des Prozessadressraums, Zugriff auf geschützte Seiten, Schreiben in einen Nur-Lese-Speicherbereich), Überlaufstapel durch unendliche Rekursion usw. In diesen Fällen werden Hardwareausnahmen oder Betriebssystemausnahmen ausgelöst.

Implizite Fehler umfassen verschiedene Fälle von unzureichender Filterung von Eingabedaten, fehlende Validierung von Zeigerwerten und vieles mehr. Solche Mängel führen nur in bestimmten Fällen zu Ausnahmesituationen.

Implementierungsfehler können auch in externen Komponenten gefunden werden, die von der Anwendung verwendet werden. Zum Beispiel in dynamischen Bibliotheken, die die notwendige Funktionalität oder Zusatzmodule bereitstellen. Auch Programmcode, der implizit in den Adressraum eines Prozesses geladen wird (zB um bestimmte API-Funktionen abzufangen) kann zum Absturz des Programms führen.

Viele Komponenten und Bibliotheken (z. B. ADO unter Windows) verwenden den programmgesteuerten Ausnahmemechanismus als Priorität zum Melden von Fehlern. Das Fehlen oder die unvollständige Behandlung von Ausnahmen durch diese Art von Anwendung kann auch in völlig harmlosen Situationen (zB Verlust der Verbindung zur Datenbank) zum Absturz führen.

Empfohlen: