Ein Breakpoint (Haltepunkt) bewirkt die Unterbrechung der Ausführung eines Natural-Objekts an einer bestimmten Statement-Zeile.
In diesem Abschnitt erfahren Sie, wie und wann Sie Breakpoints setzen.
Beachten Sie, dass Sie die hier beschriebenen Verwaltungsfunktionen auch aus einem Objekt-Sourcecode heraus aufrufen können, indem Sie die Funktion List Object Source (Objekt-Sourcecode anzeigen))
benutzen (sieheUm die Breakpoint Maintenance (Verwaltung der Breakpoints) aufzurufen:
Geben Sie im Hauptmenü Debug Main Menu den
Funktionscode B
ein.
Oder:
Geben Sie folgendes Direktkommando ein:
BM
Das Menü Breakpoint Maintenance erscheint.
Dieses Kapitel beschreibt Bedingungen für die Benutzung der Breakpoint-Verwaltung, die im Menü Breakpoint Maintenance zur Verfügung stehenden Funktionen und die in einem Breakpoint-Bildschirm vorhandenen Felder und Spalten.
Einen Breakpoint können Sie setzen, indem Sie den Namen des zu verarbeitenden Natural-Objekts und im Sourcecode des Objekts die Zeilennummer angeben, wo der Breakpoint ausgeführt werden soll.
Sobald ein Breakpoint angegeben wurde, bleibt er für die gesamte Natural-Sitzung gesetzt, es sei denn, Sie löschen ihn.
Ein Breakpoint bezieht sich auf eine bestimmte Zeilennummer im Sourcecode. Deshalb kann eine nachträgliche Änderung des Sourcecode zur Folge haben, dass der Breakpoint nicht mehr für das gewünschte Statement gilt und somit das Natural-Objekt nicht mehr an der gewünschten Stelle unterbrochen wird. Um dieses Problem bei Programmschleifen zu umgehen, können in diesen Schleifen Statement-Labels gesetzt werden (siehe auch Beispiel mit Statement-Labels im Leitfaden zur Programmierung). Für diese Statement-Labels gesetzte Breakpoints werden auf die korrekte Zeilennummer angepasst, wenn Statement-Zeilen eingefügt oder gelöscht werden.
Der eindeutige Bezeichner für einen Breakpoint ist die vom Debugger zugewiesene Spy-Nummer.
An folgenden Stellen können keine Breakpoints gesetzt werden:
In Kommentarzeilen,
in einer beliebigen Statement-Zeile außer der ersten Zeile (wenn ein einzelnes Statement mehr als eine Programmzeile belegt,
in Zeilen, die lediglich eines der folgenden Statements enthalten:
AT BREAK OF
AT END OF DATA
AT END OF PAGE
AT START OF DATA
AT TOP OF PAGE
BEFORE BREAK
DECIDE
Siehe auch die Einschränkungen, die für die Benutzung gelten, im Abschnitt Voraussetzungen für den Betrieb.
DEFINE SUBROUTINE
DEFINE WINDOW
FORMAT
IF NO RECORDS FOUND
ON ERROR
OPTIONS
Ob es möglich ist oder nicht, Breakpoints für Zeilen zu setzen, die
mit dem Natural Optimizer Compiler kompiliert wurden, ist abhängig von der
Einstellung der Option NODBG
im OPTIONS
-Statement.
Weitere Informationen siehe
OPTIONS
-Statement
im Abschnitt Switching on the Optimizer Compiler in der
Natural Optimizer Compiler-Dokumentation.
Siehe Abschnitt Test-Modus ein- und ausschalten.
Um den aktuellen Status angegebener Breakpoints auf aktiv zu setzen:
Geben Sie im Menü Breakpoint Maintenance
den Funktionscode A
und einen Objektnamen und/oder eine
Zeilennummer ein.
Oder:
Benutzen Sie das Direktkommando ACTIVATE
.
Syntax-Beschreibung siehe Abschnitt Debug-Kommandoübersicht und
-syntax.
Wenn Sie den Objektnamen oder eine Zeilennummer nicht eingeben, werden alle Breakpoints aktiviert.
Um den aktuellen Status angegebener Breakpoints auf inaktiv zu setzen:
Geben Sie im Menü Breakpoint Maintenance
den Funktionscode B
und einen Objektnamen und/oder eine
Zeilennummer ein.
Oder:
Benutzen Sie das Direktkommando
DEACTIVATE
.
Syntax-Beschreibung siehe Abschnitt Debug-Kommandoübersicht und
-syntax.
Wenn Sie den Objektnamen oder eine Zeilennummer nicht eingeben, werden alle Breakpoints deaktiviert.
Um angegebene Breakpoints zu löschen:
Geben Sie im Menü Breakpoint Maintenance
den Funktionscode C
und einen Objektnamen und/oder eine
Zeilennummer ein.
Oder:
Benutzen Sie das Direktkommando DELETE
.
Syntax-Beschreibung siehe Abschnitt Debug-Kommandoübersicht und
-syntax.
Wenn Sie den Objektnamen oder eine Zeilennummer nicht eingeben, werden alle Breakpoints gelöscht.
Um einen Breakpoint anzuzeigen:
Geben Sie im Menü Breakpoint Maintenance
den Funktionscode D
, einen Objektnamen und/oder eine Zeilennummer
ein.
Wenn Sie den Objektnamen nicht angeben, wird das Standard-Objekt (falls angegeben) benutzt.
Oder:
Benutzen Sie das Direktkommando DISPLAY
.
Syntax-Beschreibung siehe Abschnitt Debug-Kommandoübersicht und
-syntax.
Wenn für das angegebene Objekt und Zeilennummer ein Breakpoint gesetzt worden ist, erscheint der Bildschirm Display Breakpoint mit allen Breakpoint-Definitionen, zum Beispiel:
11:16:12 ***** NATURAL TEST UTILITIES ***** 2006-02-07 Test Mode ON - Display Breakpoint - Object Spy number .............. 1 Initial state ........... active Current state .. active Breakpoint name ......... BRK0130 DBID/FNR ....... 10/32 Object name ............. DEBPGM1 Library ........ SAG Line number ............. 0130 Label ................... Skips before execution .. 0 Max number executions ... 0 Number of activations ... 0 Error in definition ..... - none - Commands ... BREAK Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Last Mod Flip Canc |
Falls kein eindeutiger Breakpoint gefunden wird, erscheint der Bildschirm List Breakpoints (Beschreibung siehe unten).
Beschreibung der Felder im Bildschirm Display Breakpoint und der Spalten im Bildschirm List Breakpoints siehe Felder und Spalten in Breakpoint-Bildschirmen.
Um Breakpoints aufzulisten:
Geben Sie im Menü Breakpoint Maintenance
den Funktionscode D
, einen Objektnamen oder eine Zeilennummer ein.
Sie können Stern-Notation (*) benutzen, um einen Bereich von Objektnamen
anzugeben, zum Beispiel: ABC*
. Wenn Sie nur einen Stern (*)
eingeben, werden alle Objektnamen ausgewählt. Wenn Sie keinen Objektnamen
angeben, wird das Standard-Objekt (falls angegeben)
benutzt.
Oder:
Benutzen Sie das Direktkommando DISPLAY
.
Syntax-Beschreibung siehe Abschnitt Debug-Kommandoübersicht und
-syntax.
Der Bildschirm List Breakpoints erscheint. Darin werden alle Breakpoints aufgelistet, die für das bzw. die Objekte oder eine Zeilennummer gesetzt sind, zum Beispiel:
11:41:56 ***** NATURAL TEST UTILITIES ***** 2006-01-30 Test Mode ON - List Breakpoints - Object All Co No. BP Name Library Object Line DBID FNR Stat Skips Execs Count E *___________ *_______ *_______ 0000 I C __ 1 BRK0130 SAG DEBPGM1 0130 10 32 A A 0 0 0 __ 2 BRKPGM3-END SAG DEBPGM3 END 10 32 A A 0 0 0 __ 3 BRKPGM3-300 SAG DEBPGM3 0300 10 32 A A 0 0 0 __ 4 BRKPGM2-400 SAG DEBPGM2 0400 10 32 A A 0 0 0 __ 5 BRKPGM2-430 SAG DEBPGM2 0430 10 32 A A 0 0 0 __ 6 BRKPGM1-END SAG DEBPGM1 END 10 32 A A 0 0 0 __ 7 BRKPGM1-ALL SAG DEBPGM1 ALL 10 32 A A 0 0 0 Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Last Flip - + Canc |
Die Liste ist in aufsteigender Reihenfolge nach den Debug-Eintrag-Nummern (Spy-Nummern) sortiert, die in der Spalte No. enthalten sind.
Informationen zu den Spalten im Bildschirm List Breakpoints und zu den Zeilenkommandos, die bei einem Listeneintrag ausgeführt werden können, siehe Felder und Spalten in Breakpoint-Bildschirmen.
Um einen Breakpoint zu ändern:
Geben Sie im Menü Breakpoint Maintenance
den Funktionscode M
, einen Objektnamen und eine Zeilennummer ein.
Wenn Sie keinen Objektnamen angeben, wird das
Standard-Objekt (falls
angegeben) benutzt.
Oder:
Benutzen Sie das Direktkommando MODIFY
.
Syntax-Beschreibung siehe Abschnitt Debug-Kommandoübersicht und
-syntax.
Wenn ein eindeutiger Breakpoint angegeben wurde, erscheint der Bildschirm Modify Breakpoint, in dem Sie die Feldeinträge ändern können. Beschreibung der Felder im Bildschirm Modify Breakpoint siehe Felder und Spalten in Breakpoint-Bildschirmen.
Wird kein eindeutiger Breakpoint gefunden, dann erscheint der Bildschirm List Breakpoints (siehe Abschnitt Breakpoint anzeigen).
Wenn Sie die Bearbeitung der Breakpoint-Definitionen beendet haben, drücken Sie PF3 (Exit) oder PF5 (Save), um die Änderungen zu speichern. Informationen zu Validierungen an Debug-Einträgen siehe Abschnitt Verwaltung und Validierung der Debug-Einträge.
Wenn Sie PF12 (Canc) drücken, wird die Bearbeitung abgebrochen und der Breakpoint bleibt unverändert.
Um einen Breakpoint für eine Sitzung zu setzen:
Geben Sie im Menü Breakpoint Maintenance
den Funktionscode S
, einen Objektnamen und/oder eine Zeilennummer
ein.
Oder:
Benutzen Sie das Direktkommando SET
. Syntax-Beschreibung
siehe Abschnitt Debug-Kommandoübersicht und
-syntax.
Wenn Sie keinen Objektnamen, sondern eine gültige Zeilennummer angeben, wird der Name des Standard-Objekts (falls angegeben) benutzt. Falls kein Standard-Objekt angegeben ist, erscheint ein Auswahlfenster, in dem alle in der aktuellen Library enthaltenen Objekte angezeigt werden.
Ein für einen Copycode gesetzter Breakpoint kann jedoch nur dann auf Gültigkeit geprüft werden, wenn ein Programm ausgeführt wird, das den Copycode enthält. Informationen zu Validierungen an Debug-Einträgen siehe Abschnitt Verwaltung und Validierung der Debug-Einträge.
Der Breakpoint erhält das Standard-Kommando
(BREAK
), sein Anfangsstatus und sein aktueller
Status werden auf aktiv gesetzt und es werden keine Ausführungseinschränkungen
angegeben. Achtung: Wenn Sie beim Setzen eines Breakpoint das Kommando
BREAK
löschen und kein Kommando eingeben, das einen
Dialog öffnet, hat der Debugger keine Möglichkeit, während der
Programmunterbrechung die Steuerung zu übernehmen.
Die folgende Tabelle enthält die Beschreibung der Felder in den Bildschirmen Display Breakpoint und Modify Breakpoint und die Spalten im Bildschirm List Breakpoints:
Feld | Spalte | Erläuterung | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Test Mode | Gibt an, ob der Test-Modus auf ON oder
OFF gesetzt ist.
|
|||||||||||||||||
Object | Zeigt den Namen des Standard-Objekts (siehe Debugger starten), falls angegeben. | |||||||||||||||||
Co | Feld zur Eingabe eines der folgenden Zeilenkommandos:
|
|||||||||||||||||
Spy number | No. | Eine eindeutige Nummer, die vom Debugger beim Setzen des Breakpoint zugewiesen wird. | ||||||||||||||||
Initial state | Stat I | Gibt den Anfangszustand (Initial) und den
aktuellen Zustand (Current) des Breakpoint an: Aktiv (A ) oder
Inaktiv (I ) an.
|
||||||||||||||||
Current state | Stat C | |||||||||||||||||
Breakpoint name | BP Name | Der Name des Breakpoint.
Gültige Werte: 1 bis 12 Zeichen. Der Standard-Name für einen Breakpoint besteht aus dem Namen des Objekts und der Zeilennummer. |
||||||||||||||||
DBID/FNR | DBID | Die Datenbankkennung (DBID) und die Dateinummer (FNR) der Systemdatei, in der das Natural-Objekt gespeichert ist. | ||||||||||||||||
FNR | ||||||||||||||||||
Library | Library | Der Name der Library, die das Objekt enthält. | ||||||||||||||||
Object name | Object | Der Name des Objekts, das in der aktuellen Library oder in einer ihrer Steplibs verfügbar ist. | ||||||||||||||||
Line number | Line | Die Zeilennummer eines Statement im Sourcecode des
Objekts. Siehe auch Verwendungsbedingungen.
Als Zeilennummern können Sie auch
|
||||||||||||||||
Label | Bezieht sich auf ein zuvor im Sourcecode eines Objekts
gesetztes Label für Statements, die Verarbeitungsschleifen definieren, siehe
auch Systemvariablen
anzeigen weiter oben.
Gültige Werte: 1 bis 32 Zeichen. |
|||||||||||||||||
Skips before execution | Skips | Legt fest, dass der Breakpoint erst dann ausgeführt
werden soll, wenn die entsprechende Statement-Zeile eine bestimmte Anzahl von
Malen ausgeführt wurde.
Gültige Werte: 0 (Standardwert) bis 32767. |
||||||||||||||||
Max number executions | Execs | Ein beliebiger Wert größer als Null (0) legt die
maximale Anzahl der Breakpoint-Ausführungen fest.
Gültige Werte: 0 (Standardwert) bis 32767. |
||||||||||||||||
Number of activations | Count | Gibt an, wie viele Male ein Breakpoint für die
betreffende Statement-Zeile aktiviert wurde.
Der Zähler wird zurückgesetzt, wenn das Programm auf Level 1 gestartet wird. |
||||||||||||||||
Error in definition | E | Zeigt an, dass die Statement-Zeile in der
Breakpoint-Definition während der Programmausführung nicht in dem
katalogisierten Objekt gefunden werden kann.
Dieser Fehler kann verursacht werden, wenn ein Objekt während des Debugging-Vorgangs geändert und neu katalogisiert wird. |
||||||||||||||||
Commands | Bis zu sechs Debug-Kommandos. Geben Sie jeweils ein
Kommando pro Zeile ein. Eine Zusammenfassung der zur Verfügung stehenden
Kommandos finden Sie im Abschnitt Debug-Kommandoübersicht und
-syntax.
Vorsicht: |