Sie können In KnowlEdge den Ablauf von CTV-Modulen verfolgen.
Dabei sehen Sie das Ergebnis der Auswertung der Bedingungen, die durchlaufenen Aktionen, sowie den durchlaufenen Pseudocode.
Sobald die Ausführung eines zur Verfolgung markierten Moduls startet, aktiviert das Laufzeitsystem die laufende Instanz von KnowlEdge, der dann versucht, dieses Modul zu laden und anzuzeigen. Die Ausführung stoppt dann, wenn in dem Modul Breakpoints vorhanden sind, beim ersten Breakpoint, ansonsten am Anfang des Moduls.
Wenn KnowlEdge nicht aktiv ist, werden auch für Debug markierte Module ohne Debugging ausgeführt.
Es werden nur die Module im Debug-Modus ausgeführt, die zur Verfolgung markiert sind. Wenn in einem Modul zwar Breakpoints gesetzt sind, dieses aber nicht zur Verfolgung markiert ist, wird das Modul ohne Stopp durchlaufen!
Damit zur Laufzeit erkannt wird, welche Module mit KnowlEdge im Debug-Modus verfolgt werden sollen, ist es notwendig, diese Module zu markieren.
Wählen Sie dafür
Sie können die Markierung auf demselben Weg auch wieder aufheben.
Dieser Befehl setzt in der Registry bei den Debug-Einstellungen zu dem Modul den Schalter „Trace“ auf 1. Dieser Schalter kann ggf. auch manuell gesetzt werden.
Breakpoints können gesetzt werden
Breakpoints werden nicht mit dem Modul gespeichert, sondern in der Registry. Das bedeutet:
Um einzelne Breakpoints zu setzen oder zu löschen,
Wenn sich in der Zeile bereits ein Breakpoint befindet, wird dieser entfernt, anderenfalls wird ein neuer Breakpoint in der Zeile angelegt.
Bei Zeilen, in denen ein Breakpoint gesetzt ist, wird das Breakpoint-Symbol angezeigt (in der Entscheidungstabelle Spalte „Debug“, im Pseudocode
Sollte die Debug-Spalte bei Ausführung des Befehls nicht eingeblendet sein, so blendet Knowledge sie jetzt ein.
Wenn Breakpoints nicht gesetzt werden können, z.B. nach umfangreicheren Änderungen, kann es notwendig sein, alle Breakpoints für ein Modul zu entfernen und neu zu setzen, vgl. folgender Abschnitt.
Um mehrere Breakpoints zu entfernen, haben Sie folgenden Möglichkeiten:
Wenn KnowlEdge im Debug-Modus ist, wird immer die Spalte „Debug“ in der Entscheidungstabelle eingeblendet. In dieser Spalte ist erkennbar, ob für eine Bedingung/Aktion/Iteration ein Breakpoint gesetzt wurde, und bei welcher Stelle in der Entscheidungstabelle die Ausführung angekommen ist.
In Pseudocode wird die Debug-Info am linken Rand angezeigt.
Zusätzlich wird hier jeweils die Anweisung, die gerade ausgeführt wird, blau gekringelt unterstrichen.
Breakpoint
Aktuell ausgeführte Position
Außerdem wird in dieser Spalte für jede Bedingung angezeigt, ob sie zutrifft oder nicht:
trifft zu
trifft nicht zu
Es ist nicht möglich, während des Debuggens in KnowlEdge Variablenwerte usw. abzufragen. Sie können diese jedoch während des Debuggens verfolgen, indem Sie den Monitor einschalten, dort die Option „CTV runtime engine information“ ankreuzen, und das Infolevel auf mindestens 3 einstellen. Das Laufzeitsystem gibt dann u.a. für jede Wertzuweisung eine Monitorzeile aus.
Beim Laden eines Moduls zum Debuggen kommt es u.U. zu Problemen, weil KnowlEdge prinzipiell mit Daten aus der EDB (Rochade) arbeitet, das Laufzeitsystem aber i.d.R. mit Daten aus den Ressourcen-Dlls. Deshalb wird bei der Anzeige überprüft, ob das Änderungsdatum des Moduls in der EDB identisch ist mit dem Änderungsdatum des ausgeführten Moduls. Wenn dies nicht der Fall ist, erscheint die nebenstehende Meldung.
Sie können das Debuggen mit KnowlEdge dann trotzdem fortsetzen. Sollten sich jedoch in dem Modul die Entscheidungstabelle geändert haben, oder Pseudocode, der im Debugger ausgeführt werden soll, dann stimmen die angezeigten Positionen udn Breakpoints u.U. nicht mit den tatsächlich ausgeführten Bedingungen/Aktionen/Pseudocodezeilen überein.
Sie können die Ausführung mit den folgenden Funktionstasten, Einträgen in Extras→Debug, oder Toolbar-Knöpfen steuern:
Toolbar | F-Taste | Menü | Wirkung |
---|---|---|---|
F11 | Ein Schritt weiterlaufen | Die Ausführung wird fortgesetzt, wobei an der nächsten möglichen Stelle wieder angehalten wird; dies kann die folgende Bedingung oder Aktion in der Entscheidungstabelle sein, oder die nächste Zeile in einem Pseudocode-Block. | |
F10 | Weiterlaufen bis zum nächsten Breakpoint oder Ende | Die Ausführung wird fortgesetzt, bis der nächste Breakpoint oder das Ende der Anwendung erreicht ist. | |
Shift+F10 | Langsam weiterlaufen bis zum nächsten Breakpoint oder Ende | Wie F10, aber die Ausführung erfolgt langsam, wobei die gerade ausgeführte Entscheidungstabellen-Komponente oder die gerade ausgeführte Zeile im Pseudocode jeweils angezeigt und markiert wird. Die Geschwindigkeit kann über Debug-Einstellungen angepasst werden. | |
F11 | während der Ausführung: Pause (Anhalten) | Die Ausführung hält (während der langsamen oder normalen Ausführung) an der Stelle an, wo sie sich gerade befindet. |
Wenn Sie für das Modul, welches gerade im Debug-Modus angezeigt wird, keine weiteren Breakpoints mehr anzeigen möchten, und auch keine schrittweise Ausführung benötigen, können Sie für dieses Modul den Debug-Modus beenden.
Wählen Sie dafür in der Toolbar, oder Extras→Debug→Debug-Modus beenden.
Dies gilt dann für diese Ausführung. Bei einem erneuten Start mit KnowlEdge als Debugger wird das Modul - solange es für Debug markiert ist - wieder im Debug-Modus angezeigt.
Sie können während des Debuggens
Wenn Sie ein anderes als das gerade aktive Modul anzeigen, wird, falls das Modul sich in der Aufrufkette befindet, für dieses Modul in der Debug-Spalte der Entscheidungstabelle auch die Gültigkeit der Bedingungen angezeigt.
Es ist auch möglich, Module während des Debuggens zu bearbeiten, um z.B. beim Debuggen gefundene Fehler im Pseudocode direkt zu korrigieren. Änderungen, die während des Debuggens an Modulen vorgenommen werden, werden beim Debugging allerdings nicht berücksichtigt!
Die Debug-Einstellungen erreichen Sie über
Sie haben hier die Möglichkeit, gezielt Breakpoints zu entfernen, ohne das betreffende Modul zu öffnen.
Außerdem können Sie das Verhalten während der langsamen Ausführung beeinflussen.
Wartezeiten bei langsamer Verfolgung
Breakpoints löschen
Der Dialog enthält eine Liste aller Breakpoints in CTV-Modulen, die in der Registry eingetragen sind, gruppiert nach Modul. Sie können den Baum pro Modul aufklappen, um die Liste der Breakpoints in dem Modul anzuzeigen.
Bei den Breakpoints ist jeweils die Nummer (Reihenfolge) der Aktion oder Bedingung, sowie ggf. die Nummer der Zeile im Pseudocode angegeben.
Sie können in dem Baum Einträge markieren, um diese anschließend über Löschen zu entfernen. Wenn Sie ein Modul ankreuzen, werden alle Breakpoints darin selektiert; Sie können diese dann einzeln wieder abwählen.
Es besteht auch die Möglichkeit, Alle auswählen alles zu markieren, und ggf. dann einzelne Module oder Breakpoints wieder abzuwählen, um diese beizubehalten.
Erst wenn Sie Löschen wählen, werden die Breakpoints aus der Registry gelöscht.
Bitte prüfen Sie, ob
Wenn KnowlEdge gestartet ist, das Modul geladen wird, aber die Ausführung nicht anhält: