Inhaltsverzeichnis

KnowlEdge als Debugger

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.

Modul debuggen

  1. KnowlEdge starten, falls nicht bereits aktiv
  2. Anwendung starten, in der das Modul aufgerufen wird

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!

Modul für Debugging markieren

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

Breakpoints können gesetzt werden

Breakpoints werden nicht mit dem Modul gespeichert, sondern in der Registry. Das bedeutet:

Einzelne Breakpoints setzen und löschen

Um einzelne Breakpoints zu setzen oder zu löschen,

  1. selektieren Sie in der Entscheidungstabelle oder im Pseudocode die Zeile, in der Sie den Breakpoint setzen bzw. entfernen möchten, und
  2. wählen Sie F9 oder Extras→Debug→Breakpoint setzen oder entfernen, oder in der Toolbar .

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.

Mehrere Breakpoints entfernen

Um mehrere Breakpoints zu entfernen, haben Sie folgenden Möglichkeiten:

Debug-Informationen

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

Abb. 1: In Entscheidungstabelle: Gültigkeit von Bedingungen, Breakpoints, aktuelle Position Abb. 2: In Pseudocode: Breakpoint, aktuelle Position

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.

Warnung beim Starten

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.

Ausführung steuern

Sie können die Ausführung mit den folgenden Funktionstasten, Einträgen in Extras→Debug, oder Toolbar-Knöpfen steuern:

ToolbarF-TasteMenü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 EndeDie 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 EndeWie 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.
F11wä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.

Debug-Modus beenden

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.

Während des Debuggens

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!

Debug-Einstellungen

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.

Abb. 3: Debug-Einstellungen

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.

Was kann der Grund sein, wenn Debuggen mit KnowlEdge für ein Modul nicht funktioniert?

Bitte prüfen Sie, ob

Wenn KnowlEdge gestartet ist, das Modul geladen wird, aber die Ausführung nicht anhält:


Beschreibung im Forum