Dieses Dokument behandelt die folgenden Themen:
Zwei Typen von Einträgen können in einem Programm zu Debugging-Zwecken definiert werden:
Breakpoints
Ein Breakpoint ist ein Punkt, an dem während der Ausführung eines
Natural-Objekts die Kontrolle an den Benutzer zurückgegeben wird.
Wenn ein einzelnes Statement mehr als eine Zeile einnimmt, kann ein Breakpoint nur in der ersten Zeile dieses Statements gesetzt werden.
Wenn Sie versehentlich versuchen, einen Breakpoint in einer nicht ausführbaren Zeile (zum Beispiel in einer Kommentarzeile) zu setzen, wird der Breakpoint automatisch in die nächste ausführbare Zeile verschoben.
Watchpoints
Wenn Sie Watchpoints benutzen, können Sie rasch unerwartete Änderungen
an Natural-Variablen entdecken, die von Objekten verursacht werden, die Fehler
enthalten.
Standardmäßig werden Watchpoints benutzt, um den Debugger anzuweisen, die Ausführung von Natural-Objekten zu unterbrechen, wenn sich der Inhalt einer Variablen ändert. Sie können der Variablen beim Setzen eines Watchpoint aber auch einen bestimmten Wert zusammen mit einem Watchpoint-Operator mitgeben; in diesem Fall wird der Watchpoint nur dann aktiviert, wenn eine bestimmte Bedingung erfüllt wird.
Eine Variable wird als geändert angesehen, wenn sich entweder ihr aktueller Wert von dem Wert unterscheidet, der aufgezeichnet wurde, als der Watchpoint zuletzt angestoßen wurde, oder wenn er sich vom Anfangswert unterscheidet.
Jeder Breakpoint oder Watchpoint wird in dem betreffenden Register des Break- und Watchpoints-Fensters angezeigt. Für jeden Breakpoint wird die Zeilennummer angezeigt, in der der Breakpoint definiert wurde. Jeder Watchpoint erhält einen Namen, der dem Namen der Variablen entspricht, zu der er gehört; außerdem wird die Unterbrechungsbedingung (Break Condition) angezeigt.
Mittels des Kontrollkästchens in der ersten Spalte eines Registers kann ein Breakpoint oder Watchpoint während einer Debugging-Session jederzeit aktiviert oder deaktiviert werden. Siehe Breakpoints und Watchpoints zeitweise deaktivieren.
Für jeden Breakpoint oder Watchpoint wird die Anzahl der gefundenen Treffer (Hit Count) angezeigt, die sich jedes Mal erhöht, wenn der Debug-Eintrag durchlaufen wird. Die Anzahl der Ausführungen eines Debug-Eintrags kann allerdings auf eine der folgenden Arten eingeschränkt werden:
Sie können die Anzahl der Einträge angeben, die übersprungen werden sollen (Skips), bevor der Breakpoint oder Watchpoint ausgeführt wird. Der Debug-Eintrag wird dann solange ignoriert, bis der Event-Zähler größer ist als die Anzahl der angegebenen zu überspringenden Einträge.
Sie können die maximale Anzahl von Ausführungen angeben, so dass der Breakpoint oder Watchpoint ignoriert wird, sobald der Event-Zähler größer ist als die angegebene Anzahl der Ausführungen.
Wenn ein Breakpoint oder Watchpoint innerhalb eines anderen Objekts als des gerade aktiven Objekts vorgefunden wird, öffnet sich ein neues Editor-Fenster mit der Source dieses neuen Objekts.
Sie können im Breakpoints-Register des Break- und Watchpoints-Fenster einen Breakpoint für die aktuelle Cursor-Position hinzufügen. Oder wenn ein Breakpoint für diese Cursor-Position bereits vorhanden ist, können Sie ihn aus dem Breakpoints-Register entfernen.
Ein Dialogfeld erscheint in diesem Fall nicht. Wenn Sie den Breakpoint ändern möchten (zum Beispiel, um die maximale Anzahl der Ausführungen zu definieren), siehe Breakpoint ändern.
Siehe auch Breakpoints und Watchpoints löschen.
Anmerkung:
In der lokalen Umgebung und in einer Remote-Umgebung (SPoD) ist es
auch möglich, Breakpoints zu setzen und zu entfernen (wie unten beschrieben),
wenn der Debugger nicht aktiv ist. Jeder Breakpoint, der im Editor definiert
wurde, wird in diesem Fall geprüft, wenn der Debugger gestartet wird. Wenn der
Breakpoint an der definierten Position nicht zulässig ist, wird er in die
nächste Zeile verschoben, in der es möglich ist, einen Breakpoint zu
definieren. Siehe auch Debugger-Fenster
in der Dokumentation Natural Studio benutzen.
Breakpoint ein- oder ausschalten
Markieren Sie die Zeile, in der Sie einen Breakpoint setzen oder entfernen möchten.
Rufen Sie das Kontextmenü im Editor auf, und wählen Sie
(Breakpoint ein-/ausschalten).Oder:
Drücken Sie F9.
Oder:
Wenn die Debug-Symbolleiste angezeigt wird, wählen Sie die folgende
Schaltfläche in der Symbolleiste:
Oder:
Am linken Rand des Editor-Fensters (wo gewöhnlich die Symbole für die
Breakpoints erscheinen), klicken Sie eine Position neben der erforderlichen
Zeile an.
Wenn ein Breakpoint gesetzt wird, erscheint jetzt ein Symbol am linken Rand des Editor-Fensters. Siehe Im Editor-Fenster benutzte Symbole. Ein Eintrag für den Breakpoint erscheint auch im Breakpoints-Register des Break- und Watchpoints-Fensters.
Wenn ein Breakpoint entfernt wurde, erscheint das betreffende Symbol nicht mehr. Der Eintrag für den Breakpoint wird aus dem Breakpoints-Register des Break- und Watchpoints-Fensters entfernt.
Sie können jeden Breakpoint ändern, der gerade im Break- und Watchpoints-Fenster angezeigt wird.
Breakpoint ändern
Markieren Sie den erforderlichen Breakpoint, rufen Sie das Kontextmenü auf, und wählen Sie den Befehl
(Ändern).Es erscheint das folgende Dialogfeld:
Setzen Sie die erforderlichen Optionen:
Die Anzahl der übersprungenen Einträge vor der Ausführung des Breakpoints, wenn er nicht ausgeführt werden soll, bis das Programm eine bestimmte Anzahl von Malen ausgeführt wurde. Die Voreinstellung ist 0.
Die maximale Anzahl der Ausführungen des Breakpoints. Nachdem diese Anzahl erreicht wurde, wird der Breakpoint ignoriert. Die Voreinstellung ist 0.
Wenn Sie diese Befehlsschaltfläche wählen, wird die aktuelle Anzahl der Treffer (Hit Count) auf 0 zurückgesetzt.
Wählen Sie die Befehlsschaltfläche
.Watchpoints erscheinen im Watchpoints-Register des Break- und Watchpoints-Fensters.
Sie können Watchpoints auf unterschiedliche Arten hinzufügen:
Sie können die Variable an der aktuellen Cursor-Position im Editor-Fenster zum Watchpoints-Register des Break- und Watchpoints-Fensters hinzufügen. Es erscheint kein Dialog in diesem Fall.
Variable als Watchpoint definieren
Markieren Sie die Variable im Editor, indem Sie den Cursor auf eine beliebige Position innerhalb des Variablennamens stellen.
Rufen Sie das Kontextmenü auf, und wählen Sie
(Zu Watchpoints hinzufügen).Oder:
Drücken Sie STRG+UMSCHALT+W.
Oder:
Markieren Sie die Variable im Editor. Ziehen Sie die Variable mit
der Maus auf das Watchpoints-Register und lassen Sie sie
dort fallen.
Sie können eine Variable aus dem Variablen-Fenster zum Watchpoints-Register des Break- und Watchpoints-Fensters hinzufügen. Es erscheint kein Dialog in diesem Fall.
Variable als Watchpoint definieren
Markieren Sie die gewünschte Variable im Variablen-Fenster.
Rufen Sie das Kontextmenü auf, und wählen Sie
(Zu Watchpoints hinzufügen).Oder:
Drücken Sie STRG+UMSCHALT+W.
Sie können ein Dialogfeld benutzen, um einen Watchpoint zum Watchpoints-Register des Break- und Watchpoints-Fensters hinzuzufügen.
Watchpoint hinzufügen
Wählen Sie aus dem Menü
den Befehl (Watchpoint hinzufügen).Oder:
Rufen Sie im Watchpoints-Register des Break-
und Watchpoints-Fensters das Kontextmenü auf, und wählen Sie den Befehl
(Hinzufügen). Stellen Sie sicher, dass kein
anderer Eintrag markiert ist. Sonst erscheint dieser Befehl nicht im
Kontextmenü.
Es erscheint das Dialogfeld Add Watchpoint
(Watchpoint hinzufügen). Die Titelleiste gibt den Namen des aktuellen Programms
und der aktuellen Library sowie die Datenbank-ID und Dateinnummer des aktuellen
FUSER
an.
Setzen Sie die erforderlichen Optionen:
Die Variable, die im ausgetesteten Programm überwacht werden soll.
Um eine Bedingung für den Watchpoint zu definieren, wählen Sie einen passenden Watchpoint-Operator aus, und geben Sie einen Wert für diesen Operator an. Wenn Sie keine Bedingung angeben, gilt die Voreinstellung ("changes").
Die Watchpoint-Operatoren sind Folgende:
Operator | Aktivierung des Watchpoints |
---|---|
changes (Änderungen) | Jedesmal, wenn die Variable geändert wird. Voreinstellung. |
EQ (=) | Nur wenn der aktuelle Wert der Variablen gleich dem angegebenen Wert ist. |
NE (!=) | Nur wenn der aktuelle Wert der Variablen ungleich dem angegebenen Wert ist. |
GT (>) | Nur wenn der aktuelle Wert der Variablen größer als der angegebene Wert ist. |
LT (<) | Nur wenn der aktuelle Wert der Variablen kleiner als der angegebene Wert ist. |
GE (>=) | Nur wenn der aktuelle Wert der Variablen größer gleich dem angegebenen Wert ist. |
LE (<=) | Nur wenn der aktuelle Wert der Variablen kleiner gleich dem angegebenen Wert ist. |
Die Anzahl der übersprungenen Einträge vor der Ausführung des Watchpoints, wenn er erst dann ausgeführt werden soll, wenn das Programm eine gewisse Anzahl von Malen abgelaufen ist. Die Voreinstellung ist 0.
Die maximale Anzahl der Ausführungen des Watchpoints. Nachdem diese Anzahl erreicht wurde, wird der Watchpoint ignoriert. Die Voreinstellung ist 0.
Wählen Sie die Befehlsschaltfläche
.Der Name der ausgewählten Variablen wird jetzt im Watchpoints-Register des Break- und Watchpoints-Fensters angezeigt.
Sie können jeden Watchpoint ändern, der im Break- und Watchpoints-Fenster angezeigt wird.
Watchpoint ändern
Markieren Sie den erforderlichen Watchpoint, rufen Sie das Kontextmenü auf, und wählen Sie den Befehl
(Ändern).Es erscheint das Dialogfeld Modify Watchpoint (Watchpoint ändern).
Dieses Dialogfeld bietet dieselben Optionen wie das Dialogfeld Add Watchpoint (Watchpoint hinzufügen). Eine Beschreibung der Optionen, die in diesem Dialogfeld angegeben werden können, finden Sie im Abschnitt Watchpoint über ein Dialogfelds hinzufügen.
Außerdem bietet dieses Dialogfeld die Befehlsschaltfläche Reset Hit Count (Anzahl der Treffer zurücksetzen). Wenn Sie diese Befehlsschaltfläche wählen, wird die aktuelle Anzahl der Treffer (Hit Count) auf 0 zurückgesetzt.
Machen Sie alle erforderlichen Änderungen, und wählen Sie die Befehlsschaltfläche
.Jeder definierte Breakpoint oder Watchpoint kann zeitweise deaktiviert werden.
Breakpoint oder Watchpoint deaktivieren
Wählen Sie das erforderliche Register im Break- und Watchpoints-Fenster aus.
Wählen Sie für den gewünschten Eintrag die erste Spalte des Registers aus, um die Markierung zu entfernen.
Oder:
Rufen Sie das Kontextmenü auf, und wählen Sie den Befehl
(Aktivieren/Deaktivieren).
Wenn Sie einen Breakpoint deaktiviert haben, ändert sich das Symbol, das am linken Rand des Editor-Fensters angezeigt wird. Siehe Im Editor-Fenster benutzte Symbole.
Deaktivierten Breakpoint oder Watchpoint aktivieren
Wählen Sie das erforderliche Register im Break- und Watchpoints-Fenster aus.
Wählen Sie für den gewünschten Eintrag die erste Spalte des Registers aus, so dass erneut eine Markierung erscheint.
Oder:
Rufen Sie das Kontextmenü auf, und wählen Sie den Befehl
(Aktivieren/Deaktivieren).
Wenn Sie einen Breakpoint aktiviert haben, ändert sich das Symbol, das am linken Rand des Editor-Fensters angezeigt wird. Siehe Im Editor-Fenster benutzte Symbole.
Alle Breakpoints oder Watchpoints deaktivieren oder aktivieren
Wählen Sie das erforderliche Register im Break- und Watchpoints-Fenster aus.
Stellen Sie sicher, dass kein Eintrag markiert ist (sonst wird der erforderliche Befehl nicht im Kontextmenü angezeigt), rufen Sie das Kontextmenü auf, und wählen Sie entweder den Befehl
(Alle deaktivieren) oder (Alle aktivieren).Wenn Sie alle Breakpoints deaktiviert oder aktiviert haben, ändern sich die Symbole, die am linken Rand des Editor-Fensters angezeigt werden. Siehe Im Editor-Fenster benutzte Symbole.
Für jeden definierten Breakpoint oder Watchpoint, der im Break- und Watchpoints-Fenster angezeigt wird (ganz gleich, ob er aktiv ist oder nicht), können Sie zur Source gehen, in der dieser Breakpoint oder Watchpoint definiert wurde.
Zur Source gehen, in der ein Breakpoint oder Watchpoint definiert wurde
Wählen Sie das erforderliche Register im Break- und Watchpoints-Fenster aus.
Markieren Sie den erforderlichen Eintrag, rufen Sie das Kontextmenü auf, und wählen Sie den Befehl
(Zum Sourcecode gehen).Oder:
Klicken Sie den erforderlichen Eintrag doppelt an.
Für einen Breakpoint erscheint die Trace-Position neben der Sourcecode-Zeile, in der der Breakpoint definiert wurde.
Für einen Watchpoint erscheint der gesamte Sourcecode, in dem der Watchpoint definiert wurde.
Sie können entweder markierte Breakpoints oder Watchpoints löschen, oder Sie können alle Breakpoints oder Watchpoints löschen.
Siehe auch Breakpoint hinzufügen oder entfernen.
Breakpoint oder Watchpoint löschen
Wählen Sie das erforderliche Register im Break- und Watchpoints-Fenster aus.
Markieren Sie den erforderlichen Eintrag.
Rufen Sie das Kontextmenü auf, und wählen Sie den Befehl
(Löschen).Oder:
Drücken Sie ENTF.
Alle Breakpoints oder Watchpoints löschen
Wählen Sie das erforderliche Register im Break- und Watchpoints-Fenster aus.
Stellen Sie sicher, dass kein Eintrag markiert ist (sonst wird der erforderliche Befehl nicht im Kontextmenü angezeigt), rufen Sie das Kontextmenü auf, und wählen Sie den Befehl
(Alle löschen).Die folgenden Symbole können am linken Rand des Editor-Fensters erscheinen.
Diese Zeile enthält einen aktiven Breakpoint. | |
Diese Zeile enthält einen deaktivierten Breakpoint. | |
Diese Zeile enthält einen aktiven Breakpoint. Sie enthält auch die Trace-Position. | |
Diese Zeile enthält einen deaktivierten Breakpoint. Sie enthält auch die Trace-Position. | |
Diese Zeile enthält einen Breakpoint, der noch nicht validiert wurde (d.h. der Debugger hat noch nicht die markierte Zeile erreicht). Der Status kann entweder als aktiv (roter Hintergrund) oder inaktiv (weißer Hintergrund) anzeigt werden. | |
Diese Zeile enthält einen ungültigen Breakpoint
(zum Beispiel, wenn der Breakpoint in einer Zeile nach dem END -
Statement gesetzt wurde). Der Status kann entweder als aktiv (roter
Hintergrund) oder inaktiv (weißer Hintergrund) angezeigt werden.
|