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

  • Extras→Debug→Modul für Debug/Trace markieren.

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

  • in der Entscheidungstabelle bei einer Bedingung, Aktion oder Iteration. Die Ausführung stoppt dann bei Erreichen der betreffenden Komponente, bevor diese ausgeführt wird.
  • auf einer Pseudocode-Zeile. Die Ausführung stoppt dann bei Erreichen dieser Zeile, allerdings nur, wenn die Zeile auch tatsächlich ausgeführt wird! Wenn die Pseudocode-Zeile mit dem Breakpoint nicht ausgeführt wird, weil die gesamte Aktion nicht ausgeführt wird, oder weil sie sich innerhalb einer nicht zutreffenden IF-Abfrage befindet, so hält die Ausführung für diesen Breakpoint auch nicht an.

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

  • Breakpoints gelten immer nur auf dem Rechner, auf dem sie gesetzt wurden.
  • Breakpoints können auch für schreibgeschützte Module gesetzt werden.

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:

  • Um alle von Ihnen gesetzten Breakpoints in allen Modulen zu löschen, wählen Sie Extra→Debug→Alle Breakpoints löschen.
  • Um alle von Ihnen gesetzten Breakpoints in dem aktuellen Modul zu löschen, wählen Sie Extra→Debug→AlleBreakpoints im aktuellen Modul löschen.
  • Um gezielt von Ihnen gesetzte Breakpoints in Modulen zu entfernen, nutzen Sie den Dialog Debug-Einstellungen.

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

  • andere Module anzeigen
  • Breakpoints setzen und entfernen
  • Module für Debug markieren oder die Markierung entfernen.

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

  • Extras→Debug→Debug-Einstellungen.

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

  • Während der langsamen Verfolgung bleibt KnowlEdge auf jeder Pseudocodezeile stehen. Wie lang, können Sie über die hier einstellbare Wartezeit beim langsamen Durchlauf entscheiden. Die angegebene Zahl stellt die Wartezeit in Millisekunden dar; Default ist eine halbe Sekunde.
  • Wenn beim Durchlauf eine Komponente der Entscheidungstabelle erreicht wird, wird diese in der Entscheidungstabelle selektiert und blinkt, um sie besser hervorzuheben. Diese Gesamtzeit und die Anzahl der Blinks kann in den beiden Einstellungen zu Dauer und Häufigkeit des Blinkens eingestellt werden.

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

  • KnowlEdge aktiv ist
  • das Modul, welches sie debuggen möchten, für Trace markiert ist
  • das Modul in der gestarteten Anwendung tatsächlich ausgeführt wird
  • im Monitor OOpse auftreten, die darauf hinweisen, dass das Debuggen nicht gestartet werden konnte
  • Sie nicht mit TAA-DLLs aus dem Redist-Verzeichnis arbeiten.

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

  • Prüfen Sie, ob in dem Modul nur Breakpoints gesetzt sind, die in der aktuellen Konstellation nicht erreicht werden. Ggf. entfernen Sie alle Breakpoints aus dem Modul, um auf jeden Fall am Anfang anzuhalten.
  • Stellen Sie sicher, dass der Änderungsstand des Moduls, welches in KnowlEdge geladen wird, gleich ist mit dem, welches ausgeführt wird.

Beschreibung im Forum

ctv:knowledge:debug · Zuletzt geändert: 09.08.2024 13:25

Copyright © 1992-2025 TeamWiSE Gesellschaft für Softwaretechnik mbH         Adressen |  Kontakt |  AGB |  Datenschutzerklärung |  Impressum