[Logo der Universität Bayreuth]
Universität Bayreuth

Mathematisches
Institut



 Einleitung

 Erste Schritte

 Mail und News

 Drucken

 KDE

 LaTeX/TeX

 Linksammlung

 Linuxtools

 Netzwerk

 Programmieren

 Windows

 X Window

 Anträge

 Kontakt

Fehlersuche mit dem Data Display Debugger (DDD) <-




          <-  Start des ddd

<-  Beschreibung des ddd-Fensters

<-  Laden einer Core-Datei

<-  Start eines Programms im DDD

<-  Ausgabe vom Programmcode

<-  Haltepunkt (Breakpoint)
  1. Breakpoint
  2. Breakpoint mit Bedingung
  3. temporärer Breakpoint
  4. Watchpoint
  5. Information über eingesetzte Haltepunkte
<-  schrittweiser Ablauf des Executables

<-  Verfolgung der Aufrufkette

<-  Untersuchung von Variablen

<- dynamische Veränderung des Wertes einer Variablen

<-  Beenden des ddd







Haltepunkt (Breakpoint)

Es gibt verschiedene Typen von Haltepunkten (Breakpoints). Hier werden wir drei Typen kennenlernen: Breakpoints, Breakpoint mit Bedingug, temporäre Breakpoints und Watchpoints.

top top

•Breakpoint

Für die Festlegung von Haltepunkten (Breakpoint) gibt es mehrere Möglichkeiten. Am einfachsten erfolgt es durch einen Doppelklick am Anfang der Codezeilen. Zur Kennzeichnung des Haltepunktes erscheint das Icon Stopp mit dem Stoppschild. Alternativ gibt es den Punkt "Set Breakpoint" aus dem Kontextmenü (öffnet sich durch Klick auf die rechte Maustaste)(siehe Bild4), das Stopp-Symbol aus der Werkzeugleiste oder den Menüpunkt  "Source | breakpoints"  für komplexere Vorgaben. Sie haben auch die Möglichkeit, das gdb-Kommando "break" in der Debugger-Konsole einzugeben.
Wenn Sie einen Breakpoint nicht mehr brauchen, können Sie diesen löschen oder deaktivieren . Das können Sie im Kontextmenü (öffnet sich durch Click auf die rechte Maustaste) machen: "Delete Breakpoint"  oder "Disable Breakpoint" (siehe Bild2).

Beispiel 3 (bsp3.cpp) Das kompakte ddd_Fenster
Bild 1




top top

•Breakpoint mit Bedingung

Sie können auch eine Bedingung für den Breakpoint setzen und/oder den Breakpoint eine bestimmte Anzahl n1 von Durchläufen (des Breakpoints) ignorieren. Das erfolgt durch die Wahl vom "Properties" im Kontextmenü (öffnet sich durch Click auf die rechte Maustaste). Sie erhalten dann ein Fenster (siehe Bild3 ). Die Bedingung geben Sie im Texteingabefeld "Condition" ein (beispielsweise wird der Breakpoint nur aktiv, wenn die Bedingung n<0 zutrifft, d.h. der Wert von n zu diesem Zeitpunkt kleiner als 0 ist). Durch Eingabe einer Zahl n1 im Texteingabefeld "Ignore Count" wird der Breakpoint wärend der nächsten n1 Durchläufe (des Breakpoints) ignoriert.

Beispiel 3 (bsp3.cpp) Das kompakte ddd_Fenster
Bild 2

Beispiel 3 (bsp3.cpp) Das kompakte ddd_Fenster
Bild 3



top top

•temporärer Breakpoint

Ein temporärer Breakpoint ist ein Breakpoint, der nur ein einziges Mal wirkt. Dieser Breakpoint wird dann automatisch vom Debgger nach seiner ersten Wirkung gelöscht. Dieser Breakpoint kann auch mit Bedingung eingesetzt werden (siehe Breakpoint mit Bedingung). Einen temporären Breakpoint setzten Sie durch das Kontextmenü des Quelltextfensters (öffnet sich durch Click auf die rechte Maustaste) und Auswahl von "Set Temporary Breakpoint" (siehe Bild4).

Beispiel 3 (bsp3.cpp) Das kompakte ddd_Fenster
Bild 4




top top

•Watchpoint

Watchpoints beziehen sich auf Variablen und brechen das Programm jedes Mal ab, wenn der Wert dieser Variable sich ändert. Dabei wird der neue und der alte Wert ausgegeben. Um so einen Watchpoint zu setzen, bewegen Sie den Mauszeiger auf den Variablenname im Quelltextfenster und klicken Sie auf "Watch" in der Werkzeugleiste.

Beispiel 3 (bsp3.cpp) DDD-Konsole
Bild 5
Erkärung: Wie Sie hier sehen, hält das Programm jedes Mal, wenn der Wert der Variable i sich ändert. Der neue Wert und der alte werden ausgegeben. Sie können dann Fehler schnell bemerken.




Es gibt aber noch zwei andere Watchpoints, deren Eigenschaften genauer festgelegt sind.Es sind der Read Watchpoint und der Access Watchpoint.

Der Read Watchpoint stoppt das Programm nach jeder Anweisung und gibt den Wert der Variable aus, solange der Wert einer Variablen gelesen ist.
Um ein Read Watchpoint zu setzen bewegen Sie den Mauszeiger auf den Variablenname im Quelltextfenster, Klicken sie auf "Watch" in der Werkzeugleiste und warten Sie eine kurze Zeit. Gleich erscheint einen Menümit "Set Watchpoint on ()", "Set Access Watchpoint on ()" und "Set Read Watchpoint on ()". Da wählen Sie "Set Read Watchpoint on ()" (siehe Bild6).

Der Access Watchpoint stoppt das Programm nach jeder Anweisung, solange der Wert einer Variablen gelesen ist oder die Variable definiert bleibt.
Um ein Access Watchpoint zu setzen bewegen Sie den Mauszeiger auf den Variablenname im Quelltextfenster, Klicken sie auf "Watch" in der Werkzeugleiste und warten Sie eine kurze Zeit. Gleich erscheint einen Menümit "Set Watchpoint on ()", "Set Access Watchpoint on ()" und "Set Read Watchpoint on ()". Da wählen Sie "Set Access Watchpoint on ()" (siehe Bild6).

Beispiel 3 (bsp3.cpp) Das kompakte DDD-Fenster
Bild 6



top top

•Information über eingesetzte Haltepunkte

Um einen Überblick über alle Haltepunkte zu bekommen, die Sie eingesetzt haben, wählen Sie das Menü "  Data | Watchpoints". Sie erhalten dann ein Fenster ("Bild7") mit einem Überblick über alle Haltepunkte.

Beispiel 3 (bsp3.cpp) Info_Breakpoints-FENSTER
Bild 7
Erkärung: Hier erhalten Sie einen Überblick über alle Haltepunkte. Sie können sie mit Delete direkt im diesem fenster löschen oder mit Disable deaktivieren.



top top

Robert Baier ([e-mail-Adresse von Robert Baier])
© 2003 Robert Baier;
© 1999-2002 Robert Baier, Sascha Herrmann
Debugger-Seiten: © 2003 Robert Baier, Ekue-sse Situ Tomety
[Seitenzähler] Last modified: 22.07.2015