Sie sind hier
E-Book

Ablaufüberwachung objektorientierter Programme

Graphentheoretische Algorithmen für die Ablaufanalyse

AutorSergej Alekseev
VerlagVDM Verlag Dr. Mueller e.K.
Erscheinungsjahr2007
Seitenanzahl172 Seiten
ISBN9783836416191
FormatPDF
KopierschutzDRM
GerätePC/MAC/eReader/Tablet
Preis49,00 EUR

Die Fehlersuche in großen Serverapplikationen ist eine schwierige Aufgabe, da diese Applikationen meist nebenläufig ausgeführt werden und zeitkritisch sind. Statische Codeanalyse ist oft nicht ausreichend und schrittweises Debugging ist nicht durchführbar. Die Fehlersuche wird zusätzlich erschwert, wenn die Serverprogramme in objekt-orientierten Programmiersprachen verfasst sind, da viele etablierte Techniken, wie zum Beispiel die klassische Kontrollflussanalyse, wegen der Klassenableitungen, Methodenüberschreibungen und dynamischen Bindung von Code nicht mehr direkt angewandt werden können. In diesem Buch werden die Grundlagen für die Überwachung von laufenden, in objektorientierten Sprachen verfassten Serverapplikationen präsentiert.

Das Konzept der hier vorgestellten Lösung beruht auf der Überwachung des Programmcodes an bestimmten Stellen. Bei fehlerhaftem Verhalten kann aus den protokollierten Ereignissen der Ablauf bis zur fehlerhaften Stelle in dem Programm rekonstruiert werden. Die Auswahl der Positionen für die Ereignisfunktionen basiert auf graphentheoretischen Algorithmen, die die Menge der Positionen für die Überwachung signifikant reduzieren. Dieses Buch richtet sich an alle Informatiker, an Studenten des Faches sowie den interessierten Leser.

Der Autor

Sergej Alekseev, Dr. rer.nat. hat 2006 seine Promotion an der Universität Oldenburg abgeschlossen. Er arbeitete von 1999 bis 2003 als Software-Entwickler in der Abteilung „Intelligente Netze" bei Siemens AG. Nach der Promotion ging er zurück zu Siemens AG, wo er die Forschungsgruppe „Testmethoden" bei Communication Mobile Networks in Berlin leitet.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

Kapitel 2 Aktueller Stand der Software-Fehleranalyse (S. 5-6)

Dieses Kapitel soll einen Einstieg in die Thematik dieser Arbeit ermöglichen. Zuerst wird der Begriff „Fehler" erläutert und eine De.nition des Fehlers eingeführt. Danach wird auf die existierenden Techniken für die Fehlerlokalisierung eingegangen und ein Beispiel der Fehlersuche vorgestellt, um die Bedeutung der Ablaufanalyse zu veranschaulichen. Im weiteren wird die Problemstellung festgelegt und die verwandten Arbeiten untersucht, die sich mit dieser Thematik befassen.

2.1 Fehler

Spricht man über Fehler in der Ausführung eines Programms, so .nden Begriffe wie error, failure, fault und bug ihre Verwendung. Hierzu existiert in der Literatur eine Reihe oft unterschiedlicher De.nitionen. Eine gebräuchliche, wenn auch informale Definition für den Begriff Fehler (hier error gemeint), liefert [Cla03]. Demnach ist ein Fehler die Ermittlung oder Ausgabe eines falschen Ergebnisses durch eine Rechenanlage. Man unterscheidet des Weiteren Hardwareund Softwarefehler. Diese Arbeit konzentriert sich auf Softwarefehler, welche aus der falschen Anweisungsfolge innerhalb eines Programms resultieren. Dies kann zum Beispiel durch eine fehlerhafte Implementierung oder durch falsche Algorithmen entstehen.

Erschwert wird die Begriffswahl auch dadurch, dass eine Unterscheidung zwischen dem beobachteten Fehler (Folgefehler) und dem eigentlichen Fehler erfolgen muss. Beim eigentlichen Fehler ist der Programmzustand, in welchem er initial auftritt, von Bedeutung. Bei den meisten beobachteten Fehlern handelt es sich hingegen um Folgefehler. Solch ein Folgefehler existiert immer nur als Konsequenz und erschwert dabei die Suche nach dem eigentlichen Fehler. Aus diesen Überlegungen lässt sich folgende De.nition eines Fehlers formulieren:

Definition 2.1 Ein Fehler (error) in einem Programm wird durch einen inkorrekten Programmzustand st ersichtlich. Dieser ist dann dadurch gekennzeichnet, dass eine oder mehrere Variablen einen inkorrekten Wert zum Zeitpunktt besitzen.

Hierzu wird in der Literatur auch der Begriff des dynamischen bzw. Laufzeitfehlers verwendet. Diesem stehen Fehler gegenüber, welche zur Zeit der Übersetzung (Kompilierung) eines Programms auftreten. Letztere resultieren zum Beispiel aus Fehlern in der Programmsyntax (statische Fehler). Die Laufzeitfehler bilden die logischen Fehler, die durch eine falsche Anordnung von ansonsten syntaktisch korrekten Programmanweisungen entstehen. Deren Auf.nden ist mit hohem Aufwand verbunden, da sie in der Regel nicht vom Programm erkannt werden.

Stattdessen liefert das Programm lediglich ein falsches Ergebnis. Der Nutzer muss daher den Programmablauf analysieren, um den eigentlichen Fehler (die Ursache für Folgefehler) zu finden. Der Laufzeitfehler und der Fehler (De.nition 2.1) haben in dieser Arbeit die gleiche Bedeutung.

2.2 Existierende Techniken

Es gibt mehrere Strategien, um Fehler zu lokalisieren und deren Ursachen zu finden:

• Schritt für Schritt Debugging von Programmen
• und Logging während der Ausführung des Programms
• Post-Mortem Analyse nach dem Absturz eines Programms (core-dump)

Debugging

Debugger ermöglichen, ein Programm Schritt für Schritt auszuführen und bei jedem Schritt den Zustand des Programms zu kontrollieren [Ric04]. Um die Fehlersuche zu erleichtern, können Visualisierungswerkzeuge eingesetzt werden wie zum Beispiel der Data Display Debugger (DDD) [Nor03].

Tracing

Um sich einen Überblick über ein Programm während der Ausführung zu verschaffen, kann das Programm mit Ausgabefunktionen instrumentiert werden. Zum Beispiel können in C/C++ die printf-Anweisung und in java die System.out.print-Anweisung dafür benutzt werden. Diese Anweisungen können jedoch nicht immer alle Kontrollpfade abdecken und sie können sogar manchmal selbst Fehler verursachen. Das nächste Problem ist, dass die permanent laufenden Server-Applikationen in kurzer Zeit eine große Menge von Daten generieren können, was das Leistungsverhalten des Gesamtsystem negativ beein.ussen kann.

core-Dumps

Die modernen Betriebssysteme haben die Möglichkeit den Zustand eines Prozesses im Fehlerfall in einer Datei (core-dump) abzuspeichern. Diese Datei enthält folgende Informationen über den Prozess zum Zeitpunukt des Auftretens des Fehlers:

• Registerinhalt
• Adressen der zuletzt ausgeführten Instruktion
• Speicherabbild des Prozesses

Debugger können diese Informationen bearbeiten und erlauben es, den Fehler auf der Instruktionsoder Quellcode-Ebene zu lokalisieren. Trotzdem gibt ein Core-Dump nicht alle nötigen Informationen, um einen Fehler zu lokalisieren. Zum Beispiel kann der Kontroll.uss bis zum Auftreten des Fehlers nicht reproduziert werden. Einige Fehler können außerdem ohne den kompletten Kontroll.uss nicht rekonstruiert werden. Eine detaillierte Beschreibung über die Core-Dump Dateien kann in [Ric04] gefunden werden.

Inhaltsverzeichnis
Inhaltsverzeichnis10
Definitionsverzeichnis14
Algorithmenverzeichnis16
Abbildungsverzeichnis18
Tabellenverzeichnis22
Kapitel 1 Einleitung24
Kapitel 2 Aktueller Stand der Software-Fehleranalyse28
2.1 Fehler28
2.2 Existierende Techniken29
2.3 Beispiel einer Fehleranalyse30
2.4 Problembeschreibung32
2.5 Verwandte Arbeiten34
2.5.1 Program-Profiling34
2.5.2 Program-Tracing37
2.5.3 Werkzeuge für die Fehlersuche38
2.6 Zusammenfassung39
Kapitel 3 Graphentheoretische Grundlagen42
3.1 Grundbegriffe42
3.1.1 Allgemeine Graphen42
3.1.2 Wege: Definitionen und elementare Eigenschaften43
3.1.3 Erreichbarkeit und Zusammenhang45
3.1.4 Klassifizierung von Zusammenhangskomponenten46
3.1.5 Abgeleitete Graphen47
3.2 Die Standard-a-Zerlegung49
3.2.1 Klassen geschlossener a-Wege und Kantenzerlegungen49
3.2.2 Die Standard-a-Zerlegung allgemeiner Graphen50
Kapitel 4 Ablaufgraphen von Programmen54
4.1 Überblick54
4.2 Ablaufgraphen prozeduraler Sprachen54
4.3 Ablaufgraphen objektorientierter Sprachen56
4.4 Fehlerbehandlung mit Ausnahmen in objektorientierten Sprachen56
4.5 Definitionen58
4.6 Format einer Java-Class-Datei59
4.7 Java-Bytecode62
4.8 Instrumentierung des Codes66
Kapitel 5 Rekonstruieren von Abläufen in einem Ablaufgraphen68
5.1 Algorithmus zum Auffinden der Ereignisknoten SETEVENTS68
5.2 Markieren der Bögen71
5.3 Rekonstruieren von Abläufen (Algorithmus RECONSTRUCTFLOW)73
5.4 Beweis des Rekonstruierungsverfahrens74
5.5 Verheftungsknoten als Ereignisknoten76
5.6 Modifizierung des SETEVENTS Algorithmus81
5.7 Beispiel einer Ablaufrekonstruktion84
5.7.1 Auffinden der Ereignisknoten84
5.7.2 Markieren der Bögen89
5.7.3 Rekonstruieren der Abläufe89
5.8 Effizienzbetrachtungen des Algorithmus SETEVENTS90
5.9 Effizienzbetrachtungen des Algorithmus RECONSTRUCTFLOW91
Kapitel 6 Analyse der Optimalität der Menge von Ereignisknoten94
6.1 Formalisierung der Minimalitäts- und Optimalitätskriterien94
6.2 Vergleich des SETEVENTS Algorithmus mit dem Knuth-Stevenson Algorithmus97
6.3 Kombinieren des Algorithmus mit dem Knuth-Stevenson Algorithmus99
6.4 Zerlegen der starken Zusammenhangskomponenten104
6.5 Hierarchie der Algorithmen zum Finden der Überwachungsmenge der Knoten110
6.6 Häufigkeitsanalyse und Wahrscheinlichkeitsanalyse112
Kapitel 7 Ablaufrekonstruktion objektorientierter Programme120
7.1 Auffinden und Platzieren von Überwachungspunkten in einem Programm120
7.2 Protokollierung eines Ablaufes121
7.3 Rekonstruieren eines Ablaufes in einem objektorientierten Programm122
7.3.1 Ablauf innerhalb einer Methode122
7.3.2 Algorithmus zur Rekonstruktion eines Ablaufs im kompletten Programm122
7.3.3 Beispiel einer Rekonstruktion eines Objektorientierten Programms128
7.3.4 Erweiterungen des Algorithmus zum Rekonstruieren eines Ablaufes im kompletten Programm134
Kapitel 8 Überwachungsagent für Java-basierte Anwendungen146
8.1 Beschreibung146
8.1.1 Phase 1: Bestimmen von Überwachungspunkten eines Programms147
8.1.2 Phase 2: Aktivieren der Überwachungspunkte und Protokollieren der Ereignisse147
8.1.3 Phase 3: Rekonstruieren der Abläufe149
8.2 Beispiele149
8.3 Verifikation der Algorthmen151
Kapitel 9 Zusammenfassung und Ausblick156
A Abgeleitete Graphen158
B gprof -Beispiel160
C strace-Beispiel161
D Byte-Code der main-Methode162
Literatur164
Index168

Weitere E-Books zum Thema: Systemadministration - IT

Technische Dokumentation

E-Book Technische Dokumentation
Praktische Anleitungen und Beispiele Format: PDF

Die 2. Auflage führt das bewährte Konzept - angereichert mit neuen Beispielen - weiter. Der Autor gibt einfach nachvollziehbare Vorgaben in Form von Bausteinen, nach denen Bedienungsanleitungen und…

Technische Dokumentation

E-Book Technische Dokumentation
Praktische Anleitungen und Beispiele Format: PDF

Die 2. Auflage führt das bewährte Konzept - angereichert mit neuen Beispielen - weiter. Der Autor gibt einfach nachvollziehbare Vorgaben in Form von Bausteinen, nach denen Bedienungsanleitungen und…

Linux-Systemadministration

E-Book Linux-Systemadministration
Grundlagen, Konzepte, Anwendung Format: PDF

Linux ist eine fest etablierte, für vielfältige Rechnerarchitekturen verfügbare Plattform und zeichnet sich insbesondere durch die hohe Stabilität und Sicherheit des Systems aus. Dieses Buch bietet…

Linux-Systemadministration

E-Book Linux-Systemadministration
Grundlagen, Konzepte, Anwendung Format: PDF

Linux ist eine fest etablierte, für vielfältige Rechnerarchitekturen verfügbare Plattform und zeichnet sich insbesondere durch die hohe Stabilität und Sicherheit des Systems aus. Dieses Buch bietet…

Linux-Systemadministration

E-Book Linux-Systemadministration
Grundlagen, Konzepte, Anwendung Format: PDF

Linux ist eine fest etablierte, für vielfältige Rechnerarchitekturen verfügbare Plattform und zeichnet sich insbesondere durch die hohe Stabilität und Sicherheit des Systems aus. Dieses Buch bietet…

Linux-Systemadministration

E-Book Linux-Systemadministration
Grundlagen, Konzepte, Anwendung Format: PDF

Linux ist eine fest etablierte, für vielfältige Rechnerarchitekturen verfügbare Plattform und zeichnet sich insbesondere durch die hohe Stabilität und Sicherheit des Systems aus. Dieses Buch bietet…

Weitere Zeitschriften

BONSAI ART

BONSAI ART

Auflagenstärkste deutschsprachige Bonsai-Zeitschrift, basierend auf den renommiertesten Bonsai-Zeitschriften Japans mit vielen Beiträgen europäischer Gestalter. Wertvolle Informationen für ...

Das Grundeigentum

Das Grundeigentum

Das Grundeigentum - Zeitschrift für die gesamte Grundstücks-, Haus- und Wohnungswirtschaft. Für jeden, der sich gründlich und aktuell informieren will. Zu allen Fragen rund um die Immobilie. Mit ...

Gastronomie Report

Gastronomie Report

News & Infos für die Gastronomie: Tipps, Trends und Ideen, Produkte aus aller Welt, Innovative Konzepte, Küchentechnik der Zukunft, Service mit Zusatznutzen und vieles mehr. Frech, offensiv, ...

DGIP-intern

DGIP-intern

Mitteilungen der Deutschen Gesellschaft für Individualpsychologie e.V. (DGIP) für ihre Mitglieder Die Mitglieder der DGIP erhalten viermal jährlich das Mitteilungsblatt „DGIP-intern“ ...