Verfolgung des Modulablaufs in KnowlEdge

KnowlEdge kann als Debugger für CTV-Module verwendet werden.

Voraussetzungen

Um ein Modul mit KnowlEdge verfolgen zu können, müssen zwei Voraussetzungen gegeben sein:

1. Das Modul muss für Debug/Trace markiert sein. Dies kann direkt über die Registry eingetragen werden, kann aber auch in KnowlEdge im Menü Extras→Debug gesetzt werden.

2. KnowlEdge muss aktiv sein, bevor die Ausführung des Moduls bzw. der Anwendung, die das Modul enthält, gestartet wird. Die CTV-Laufzeit prüft, ob ein Modul getraced werden soll, und ob ein Tool dafür zur Verfügung steht, und sendet eine Benachrichtigung an dieses Tool. Das Modul braucht in KnowlEdge nicht vorab geladen werden.

Es ist möglich, während einer Debug-Sitzung mit KnowlEdge Module zu laden und auch zu bearbeiten - sogar gerade verfolgte Module. Wenn allerdings während der Verfolgung Änderungen an einem Modul vorgenommen werden, sind diese für die Modulausführung nicht wirksam; in der Folge stimmen die Positionen von Breakpoints usw. u.U. nicht mehr mit dem ausgeführten Code überein.

Breakpoints

In den Modulen können mit KnowlEdge Breakpoints definiert werden. Wenn für ein Modul Breakpoints definiert sind, stoppt KnowlEdge bei der Verfolgung auf dem ersten Breakpoint. Enthält ein Modul keine Breakpoints, stoppt KnowlEdge vor Auswertung der ersten Bedingung, damit der Benutzer die Möglichkeit hat, das Debuggen selbst zu steuern.

Breakpoints können während der Ausführung hinzugefügt oder entfernt werden; dies wird sofort wirksam.

Breakpoints können auf Aktionen, Bedingungen, und Pseudocodezeilen gesetzt werden. Wird ein Breakpoint auf eine Aktion oder Bedingung gesetzt, hält KnowlEdge an, wenn die Auswertung der Aktion/Bedingung beginnt.

Breakpoints werden nicht mit dem Modul gespeichert, sondern separat in der Registry. Es ist somit möglich, Breakpoints auch für schreibgeschützte Module zu verändern.

Über das Menü Extras→Debug→Debug gibt es auch die Möglichkeit, alle Breakpoints oder alle Breakpoints in einem Modul zu löschen. Im Dialog Debug-Einstellungen können Sie die definierten Breakpoints in allen Modulen sehen und ggf. entfernen.

Debugging steuern

Neben dem Setzen von Breakpoints haben Sie weitere Möglichkeiten, den Ablauf zu beeinflussen. Sobald KnowlEdge im Debug-Moduls ist, stehen dafür Befehle im Menü Extras→Debug sowie in der Toolbar zur Verfügung:

  • Breakpoints setzen oder entfernen
  • Debug anhalten: Der Befehl „Pause“ (F11) unterbricht das Debuggen bei der nächsten Anweisung
  • Einen Schritt weiterlaufen : „Step“ (F11) führt die aktuelle Anweisung aus und bleubt auf der nächsten Anweisung stehen.
  • Weiterlaufen bis Breakpoint oder Ende: „Run“ (F10)führt die folgenden Anweisungen so lange aus, bis entweder ein Breakpoint getroffen wird oder das Modulende erreicht wird. Die Ausführung ist nicht sichtbar.
  • Langsam weiterlaufen: „Slow“ (Shift+F10) führt ebenfalls die folgenden Anweisungen aus, aber die Ausführung wird verlangsamt, sodass man den Ablauf beobachten kann. Die Dauer und Anzeige jeden Schritts kann in dem Dialog Debug-Einstellungen angepasst werden.
  • Debug beenden: Beendet das Debuggen, aber nicht die Anwendung. Diese läuft ohne Debugging weiter.

Sie können während des Debuggens die Ansicht wechseln oder auch andere Module laden; beim Fortsetzen des Debuggens positioniert sich KnowlEdge wieder in dem aktuellen Modul auf die aktuelle Komponente bzw. Anweisung.

Modulaufrufe

Aufrufe anderer CTV-Module werden ebenfalls im Debugger verfolgt, falls das aufgerufenen Modul dafür markiert ist. In dem Fall wechselt KnowlEdge selbständig in das gerufenene Modul und nach dessen Ende wieder zurück.

Beispiel in Bildern

Die nachfolgenden Abbildungen sollen die Funktionsweise verdeutlichen.

Vor dem Debuggen

Für die Debug-Funktionalität wurde das Menü Extras um das Untermenü Debug erweitert. Hierunter finden Sie alle Funktionen, um Breakpoints zu setzen und zu entfernen, das Modul zum Debuggen zu markieren, und zur Definition weiterer Einstellungen.

Um beim Entwickeln mit KnowlEdge nicht unnötig Platz zu verbrauchen, wird die Spalte Breakpoints, solange KnowlEdge nicht im Debug-Moduls ist, nur auf Wunsch angezeigt.

keddebug_1.jpg

Sie können hier das Modul zum Debuggen markieren.

Um Breakpoints zu setzen oder zu entfernen, können Sie das Menü Extras→Debug, die Toolbar oder den Shortcut nutzen:

keddebug_2.jpg

Dies gilt auch für Breakpionts im Pseudocode:

keddebug_3.jpg

Über den Menüpunkt Extras→Debug→Debug Einstellungen erhalten Sie folgenden Dialog:

keddebug_4.jpg

Hier haben Sie die Möglichkeit,

  • Breakpoints gezielt aus - auch nicht geladenen - Modulen zu entfernen,
  • Die Anzeige für den langsamen Durchlauf einzustellen.

Während des Debuggens

Um eine Debug-Sitzung zu starten, wird die Anwendung z.B. über TstDo gestartet. Sobald ein Modul angetroffen wird, welches für Debug marktiert ist, sendet die CTV-Laufzeit eine Nachricht an KnowlEdge, dass dieses Modul gedebugged werden soll.

Die CTV-Laufzeit arbeit bekanntlich vorzugsweise mit Modulinformationen, die aus Ressourcen-Dlls geladen werden. KnowlEdge jedoch lädt die Modulinformationen vorzugsweise aus EDB/Rochade. Der Stand in der Ressourcen-Dll sollte mit dem Stand in Rochade übereinstimmen, um sinnvolle Debug-Anzeigen zu erhalten. Sicherheitshalber überprüpft KnowlEdge bim Start des Debuggens für ein Modul die Änderungsdaten und gibt eine Meldung aus, wenn diese nicht übereinstimmen.

keddebug_5.jpg

Das Debuggen ist dann trotzdem möglich, aber je nach Art der zwischenzeitlich vorgenommenen Änderungen können z.B. Breakpoints nicht erkannt werden oder Variableninhalte nicht abgefragt werden.

Wenn KnowlEdge in den Debug-Modus versetzt wird, wird die Spalte „Breakpoints“ angezeigt, und die Toolbar um Debug-Buttons erweitert.

Da auf der ersten Bedingung ein Breakpoint gesetzt ist, hält KnowlEdge vor auswertung der Bedingung an. Die aktuell ausgewertete Komponente wird durch einen Pfeil markiert:

keddebug_6.jpg

Enthält ein Modul Breakpoints, wird das Modul immer so soweit ausgeführt, bis der erste Breakpoint getroffen wird. Andernfalls hält Knowledge vor Auswertung der ersten Bedingung an.

Sowohl die Toolbar als auch das Menü Extras→Debug enthalten jetzt Befehle, um das Debuggen zu steuern:

keddebug_6a.jpg

Nach Auswertung der Bedingungen wird das Ergebis in der Entscheidungstabelle angezeigt: Die zutreffende Bedingung ist durch ein grünes Häkchen gekennzeichnet, und die ausgeführte Regel ist hervorgehoben:

keddebug_7.jpg

Hier wurde ein Breakpoint in Pseudocode getroffen:

keddebug_8.jpg

Die aktuelle Zeile ist hier ebenfalls mit einem Pfeil markiert, der als nächstes ausgeführte Code ist mit einer Wellenlinie unterlegt.

Sie haben in Pseudocode die Möglichkeit, die Inhalte von Variablen und Objektfeldern anzeigen zu lassen, in dem Sie den Cursor darüber stellen; der Inhalt wird als Tooltip angezeigt:

keddebug_10.jpg

faq:ctv:keddebug · Zuletzt geändert: 30.06.2020 11:56

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