Breakpoint Maintenance (Verwaltung der Breakpoints)

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 benutzen (siehe List Object Source (Objekt-Sourcecode anzeigen))

Beginn der AnweisungslisteUm 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.


Verwendungsbedingungen

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.

Test-Modus ON/OFF setzen

Siehe Abschnitt Test-Modus ein- und ausschalten.

Breakpoint aktivieren

Beginn der Anweisungsliste 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.

Breakpoint deaktivieren

Beginn der Anweisungsliste 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.

Breakpoint löschen

Beginn der AnweisungslisteUm 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.

Breakpoint anzeigen

Beginn der Anweisungsliste 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.

Beginn der Anweisungsliste 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.

Breakpoint ändern

Beginn der Anweisungsliste Um einen Breakpoint zu ändern:

  1. 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).

  2. 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.

Breakpoint setzen

Beginn der AnweisungslisteUm 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.

Felder und Spalten in Breakpoint-Bildschirmen

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:
Kommando Aktion
AC Breakpoint aktivieren
DA Breakpoint deaktivieren
DI Breakpoint anzeigen
MO Breakpoint ändern
DE Breakpoint löschen
? Gültige Zeilenkommandos auflisten
. Breakpoint-Bildschirm verlassen
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 BEG, END oder ALL angeben:

BEG Gibt den Breakpoint an, der die Programmausführung bei dem ersten Statement, das in einem Objekt ausgeführt wird, unterbrechen soll.
  BEG-Breakpoints können nicht für Copycode angegeben werden.
END Gibt den Breakpoint an, der die Programmausführung bei dem letzten Statement, das in einem Objekt ausgeführt wird, unterbrechen soll, zum Beispiel, ein END- oder ein FETCH-Statement.
  END-Breakpoints können nicht für Copycode angegeben werden.
ALL Gibt an, dass ein Breakpoint die Programmausführung bei jeder Zeile, die ein ausführbares Statement enthält, unterbrechen soll.
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:
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.