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-Quellcode heraus aufrufen können, indem Sie die Funktion benutzen (siehe List Object Source (Objekt-Quellcode anzeigen))
Um 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 Quellcode 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 Quellcode. Deshalb kann eine nachträgliche Änderung des Quellcode 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
Natural-Statement OPTIONS im Abschnitt
Optimizer Compiler aktivieren 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 Quellcode des Objekts. Siehe auch
Verwendungsbedingungen.
Als Zeilennummern
können Sie auch
|
||||||||||||||||
| Label | Bezieht sich auf ein zuvor im Quellcode 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 |