Visuelles Debugging Vortrag im Seminar: „Software - Visualisierung“ SS 2002 Freie Universität...

Post on 06-Apr-2016

224 views 4 download

transcript

Visuelles Debugging

Vortrag im Seminar: „Software - Visualisierung“

SS 2002

Freie Universität Berlin

Enrico Heine

Prof. Löhr

Gliederung

1. Debuggen allgemein

2. Visuelle Debugger

3. Pro und Kontra

4. „praktische“ Beispiele

Visuelles Debugging

Visuelles Debugging 1. Debuggen allgemein

1.1 Begriff Debugger / Debugging

•Bug = Wanze•Debuggen = Entwanzen, Beseitigung von Fehlern

•Begriff von Compilerbaupionierin Grace Hopper geprägt:

„Ein solches Insekt, von einer glühenden Kathodenstrahlröhre angelockt, setzte ihren Mark2 Computer außer Betrieb.“

=> Seit dem werden Fehler Bugs genannt <=

Visuelles Debugging 1. Debuggen allgemein

1.2 Vorgehen beim Debuggen

• Worin besteht der Fehler?• Wo befindet sich der Fehler?• Fehler beheben• Fehlerbehebung testen!

Visuelles Debugging 1. Debuggen allgemein

1.3 Probleme beim Debuggen

Technische Probleme

•Symptome & Ursachen können sich an verschiedenen Stellen befinden

•Seiteneffekte können auftreten

Psychologische Probleme

•Was nicht sein kann ...•Man sieht was man erwartet

=> Zuweisungsfehler lassen sich 3x schwerer erkennen

Visuelles Debugging 1. Debuggen allgemein

1.4 Klassen von Bugs

• Laufzeitfehler• Logische Fehler• Speicherfehler• Umgebungsfehler• Toolfehler• Hard- und Softwarefehler• Konzeptionsfehler

Häufigkeit des Auftretens Fehlerbehebungsmöglickeit

Debugger Unterstützung

Visuelles Debugging 2. visuelle Debugger

2.1 Grundprinzipien

Heisenberg - Prinzip

Wahrheitsprinzip

=> Die Benutzung eines Debuggers darf das Verhalten des Programmes nicht verändern!

=> Die Informationen des Debuggers müssen Wahrheitsgemäß sein!

Visuelles Debugging 2. visuelle Debugger

2.2 visualisierbare Daten

Statische Informationen

•Pretty Paint

- Syntax Hervorhebung

- Überwachung der Klammerung- automatische Textausrichtung

•Reengineering Tools

-Erzeugung von Struktogrammen oder Klassendiagrammen aus Quelltext

Visuelles Debugging 2. visuelle Debugger

2.2 visualisierbare Daten

Dynamische Informationen

•Datenstrukturen

•Datenfluß

•Siehe Vortrag DDD

•Breakpoints

•Siehe Vortrag Jinsight

Visuelles Debugging 2. visuelle Debugger

2.3 Interaktion Benutzer <=> Debugger

•Breakpoint = Haltepunkt bei dem das Programm stoppt

•Debuggee = Prozeß, der vom Debugger kontrolliert wird

•Single Step = Programm wird zeilenweise ausgeführt

Begriffe

Visuelles Debugging 2. visuelle Debugger

2.3 Interaktion Benutzer <=> Debugger

USER Interface

Debugger Schnittstelle des Betriebssystems

bzw.

JVMDI (Java Virtual Machine Debugging Interface)

Kernel

Allgemeiner Aufbau

Visuelles Debugging 2. visuelle Debugger

2.3 Interaktion Benutzer <=> Debugger

Debuggee (OS) / JVMDI Debugger

Signal: Debuggee ist auf

Breakpoint gestoßen ist Meldung: Breakpoint gefunden

Fordert: Zustand

Fordert: Zustand

Lieferung: ZustandLieferung: Zustand

ZeitSetzen: Breakpoint

Setzen: BreakpointStart

Stopp

Start

Visuelles Debugging 2. visuelle Debugger

2.4 visuelle Debugger (Systeme)

JBuilderUnterstützte Funktionen:

• Pretty Paint• Watchlists für Variablen und Ausdrücke• Stackanzeige• Single Step• Breakpoints:

• ZeilenBP:• ExceptionBP:• KlassenBP:• MethodenBP:

Visuelles Debugging 2. visuelle Debugger

2.4 visuelle Debugger (Systeme)

JSWATUnterstützte Funktionen:

• Pretty Paint• Watchlists• Single Step• Stackanzeige• Breakpoints

Visuelles Debugging 2. visuelle Debugger

2.4 visuelle Debugger (Systeme)

DDDUnterstützte Funktionen:

• Watchlists• Single Step• Breakpoints• Visualisieren von Datenbeziehungen- & Strukturen:

- u.a. Darstellung verzweigter Strukturen als Bäume- numerische Felder in 2 bzw. 3 dimensionalen Feldern

Visuelles Debugging 2. visuelle Debugger

2.4 visuelle Debugger (Systeme)

DDD

Visuelles Debugging 2. visuelle Debugger

2.4 visuelle Debugger (Systeme)

ZStep95 - für Common Lisp- „merkt“ sich den kompletten Programmzustand

Visuelles Debugging 2. visuelle Debugger

2.4 visuelle Debugger (Systeme)

ISVL

(Internet Software Visualization Laboratory)

– um Fernunterricht von Prolog zu unterstützen– verteilte Fehlersuche– Prologprogramm über Java Applet => ISVL Server– Visualisierung durch transparent prolog machine– Schüler & Lehrer können Notizen hinzufügen

Visuelles Debugging 2. visuelle Debugger

2.4 visuelle Debugger (Systeme)

ISVL

Visuelles Debugging 2. visuelle Debugger

2.4 visuelle Debugger (Systeme)

ISVL

Visuelles Debugging 2. visuelle Debugger

2.4 visuelle Debugger (Systeme)

PRISM

– kommerziell erhältlicher Debugger von SUN

– Bestandteil des High Performance Computing Pakets

– Darstellung von Datenstrukturen auf Bäume beschränkt

Visuelles Debugging 2. visuelle Debugger

2.4 visuelle Debugger (Systeme)

• Lens:- in Quellcode müssen spezielle Animationsanweisungen

eingefügt werden• VCC:

- für Programmiersprache C• DEET:

- benutzt externe Grafikprogramme- auf Baumstrukturen beschränkt

• DUEL:- spezielle Programmiersprache für Debugger- XDUEL visualisiert die Daten von DUEL

Visuelles Debugging 3. visuelle Debugger

PRO • Durch Break-/Watchpoints lassen sich viele

Fehler finden

• durch Visualisierung von Daten & Datenstruktren lassen sich Speicher-, Zugriffs- & Fehler in Algorithmen aufspüren

• Visuelle Daten sind allgemein besser zu verstehen als abstrakte

Visuelles Debugging 3. visuelle Debugger

CONTRA • Visualisierung von Daten - & Datenstrukturen im

komplexen unübersichtlich

• Der Fehler steckt im Detail! Visualisierungs- algorithmen vereinfachen und abstrahieren => Widerspruch zu den Grundprinzipien

Visuelles Debugging 4. visuelle Debugger

„praktische Beispiele“

JBuilder & Jswat

Beispiele für:- Breakpoints- Watchlisten

- Stackanzeigen

Visuelles Debugging 5. Literatur

• Cleve und Zeller: „Automatisches Debuggen“, 2001• Zeller: “Datenstrukturen visualisieren und animieren mit DDD“, 2001• Hilfethemen / Tutorials des JBuilder, Jswat, MS Visual Studio• Topic: „Seminar Visualisierung in Informatik und Naturwissenschaften - Visuelles

Debugging“, 1999• Lieberman, H.; Fry, C.: , ACM Conference on Computers and Human Interface [CHI-

95], Denver, April 1995• http://www.bluemarsh.com/java/jswat• http://www.borland.com• http://www.gnu.org/software/ddd/