260 likes | 367 Views
Visuelles Debugging. Vortrag im Seminar: „ Software - Visualisierung “. Freie Universität Berlin. Prof. Löhr. SS 2002. Enrico Heine. Gliederung. Visuelles Debugging. 1. Debuggen allgemein 2. Visuelle Debugger 3. Pro und Kontra 4. „praktische“ Beispiele. 1. Debuggen allgemein.
E N D
Visuelles Debugging Vortrag im Seminar: „Software - Visualisierung“ Freie Universität Berlin Prof. Löhr SS 2002 Enrico Heine
Gliederung Visuelles Debugging 1. Debuggen allgemein 2. Visuelle Debugger 3. Pro und Kontra 4. „praktische“ Beispiele
1. Debuggen allgemein Visuelles Debugging 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 <=
1. Debuggen allgemein Visuelles Debugging 1.2 Vorgehen beim Debuggen • Worin besteht der Fehler? • Wo befindet sich der Fehler? • Fehler beheben • Fehlerbehebung testen!
1. Debuggen allgemein Visuelles Debugging 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
1. Debuggen allgemein Visuelles Debugging 1.4 Klassen von Bugs • Laufzeitfehler • Logische Fehler • Speicherfehler • Umgebungsfehler • Toolfehler • Hard- und Softwarefehler • Konzeptionsfehler Fehlerbehebungsmöglickeit Häufigkeit des Auftretens Debugger Unterstützung
2. visuelle Debugger Visuelles Debugging 2.1 Grundprinzipien Heisenberg - Prinzip => Die Benutzung eines Debuggers darf das Verhalten des Programmes nicht verändern! Wahrheitsprinzip => Die Informationen des Debuggers müssen Wahrheitsgemäß sein!
2. visuelle Debugger Statische Informationen Visuelles Debugging 2.2 visualisierbare Daten • Pretty Paint -Syntax Hervorhebung - Überwachung der Klammerung - automatische Textausrichtung • Reengineering Tools • -Erzeugung von Struktogrammen oder Klassendiagrammen aus Quelltext
2. visuelle Debugger Dynamische Informationen Visuelles Debugging 2.2 visualisierbare Daten • Datenstrukturen • Datenfluß • Breakpoints • Siehe Vortrag DDD • Siehe Vortrag Jinsight
2. visuelle Debugger Visuelles Debugging 2.3 Interaktion Benutzer <=> Debugger Begriffe • Breakpoint = Haltepunkt bei dem das Programm stoppt • Single Step = Programm wird zeilenweise ausgeführt • Debuggee = Prozeß, der vom Debugger kontrolliert wird
2. visuelle Debugger Visuelles Debugging 2.3 Interaktion Benutzer <=> Debugger Allgemeiner Aufbau USER Interface Kernel Debugger Schnittstelle des Betriebssystems bzw. JVMDI (Java Virtual Machine Debugging Interface)
2. visuelle Debugger Visuelles Debugging 2.3 Interaktion Benutzer <=> Debugger Debuggee (OS) / JVMDI Debugger Zeit Setzen: Breakpoint Setzen: Breakpoint Start Start Signal: Debuggee ist auf Stopp Meldung: Breakpoint gefunden Breakpoint gestoßen ist Fordert: Zustand Fordert: Zustand Lieferung: Zustand Lieferung: Zustand
2. visuelle Debugger Visuelles Debugging 2.4 visuelle Debugger (Systeme) JBuilder Unterstützte Funktionen: • Pretty Paint • Watchlists für Variablen und Ausdrücke • Stackanzeige • Single Step • Breakpoints: • ZeilenBP: • ExceptionBP: • KlassenBP: • MethodenBP:
2. visuelle Debugger Visuelles Debugging 2.4 visuelle Debugger (Systeme) JSWAT Unterstützte Funktionen: • Pretty Paint • Watchlists • Single Step • Stackanzeige • Breakpoints
2. visuelle Debugger Visuelles Debugging 2.4 visuelle Debugger (Systeme) DDD Unterstü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
2. visuelle Debugger Visuelles Debugging 2.4 visuelle Debugger (Systeme) DDD
2. visuelle Debugger Visuelles Debugging 2.4 visuelle Debugger (Systeme) ZStep95 - für Common Lisp - „merkt“ sich den kompletten Programmzustand
2. visuelle Debugger Visuelles Debugging 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
2. visuelle Debugger Visuelles Debugging 2.4 visuelle Debugger (Systeme) ISVL
2. visuelle Debugger Visuelles Debugging 2.4 visuelle Debugger (Systeme) ISVL
2. visuelle Debugger Visuelles Debugging 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
2. visuelle Debugger Visuelles Debugging 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
3. visuelle Debugger Visuelles Debugging 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
3. visuelle Debugger Visuelles Debugging CONTRA • Visualisierung von Daten - & Datenstrukturen im komplexen unübersichtlich • Der Fehler steckt im Detail! Visualisierungs- algorithmen vereinfachen und abstrahieren => Widerspruch zu den Grundprinzipien
4. visuelle Debugger Visuelles Debugging „praktische Beispiele“ JBuilder & Jswat Beispiele für: - Breakpoints - Watchlisten - Stackanzeigen
5. Literatur Visuelles Debugging • 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/