Altova XMLSpy 2024 Professional Edition

Im Debug-Modus des "XPath/XQuery"-Fensters (Abbildung unten) können Sie einen XPath/XQuery-Ausdruck, während er auf die aktive Datei angewendet wird, debuggen.

 

Im Debug-Modus werden zum Ergebnisbereich zwei zusätzliche Bereiche hinzugefügt (siehe Abbildung unten):

 

der Bereich für Überwachungsausdrücke und Variablen; sowohl Überwachungsausdrücke als auch Variablen werden im selben Bereich angezeigt, wobei Variablen ein- und ausgeblendet werden können

der Call Stack- und der Debug-Punkte-Bereich. Jeder davon hat ein eigenes Register im Fenster.

XPXQWindowDebug01

Die Bereiche für Ausdrücke und Ergebnisse können nebeneinander oder übereinander angeordnet werden. Um zwischen diesen Layouts zu wechseln, klicken Sie (rechts oben in der Symbolleiste des Fensters) auf die Schaltfläche Horizontales/Vertikales Layout.

 

Im Debugger-Modus stehen die folgenden Funktionalitäten zur Verfügung:

 

Hier können Sie in den XPath-Auswertungsvorgang einsteigen und Schritt für Schritt sehen, wie der XPath-Ausdruck ausgewertet wird. Verwenden Sie dazu die Symbolleisten-Schaltfläche Einsteigen (F11). Bei jedem Auswertungsschritt wird der soeben ausgewertete Teil des Ausdrucks gelb markiert (siehe Abbildung oben), während das Ergebnis der Auswertung dieses Schritts im Ergebnisbereich angezeigt wird. So wurden z.B. in der Abbildung oben alle section-Nachfahren des Elements book ausgewählt, unabhängig davon, ob Sie als Child-Elemente von book vorkommen oder tiefer verschachtelt sind.

Im Überwachungsausdrucks- und Variablenfenster wird immer der Kontext-Node des gerade ausgewerteten Ausdrucksschritts angezeigt. So wird etwa in der Abbildung oben gerade der Ausdrucksschrittt //section angezeigt. Sein Kontext-Node ist book. Daher wird der Node book (und dessen Inhalt) als Kontext-Element angezeigt.

Sie können Breakpoints setzen, an denen die Auswertung angehalten werden soll, damit Sie Ergebnisse an diesen Stellen überprüfen können. Sie können die Auswertung anschließend durchlaufen lassen, indem Sie nur an den Breakpoints anhalten. Verwenden Sie dafür die Symbolleisten-Schaltfläche Debugger starten (F5). Dies geht schneller, als wenn Sie bei jedem Schritt mit Einsteigen (F11) anhalten.

Sie können Tracepoints setzen, um einen Bericht über die Ergebnisse an den als Tracepoints markierten Stellen zu sehen. Die Auswertung wird dabei nicht angehalten (außer bei Breakpoints), doch alle Tracepoint-Ergebnisse werden zusammen in einer Liste im Ergebnisbereich angezeigt.

Mit Hilfe von Überwachungsausdrücken können bestimmte Informationen (wie Dokumentinhalt oder Auswertungsaspekte) bei der Auswertung überprüft werden. Sehr nützlich ist die Anzeige des Kontext-Elements im selben Fenster. Dadurch sehen Sie, in welchem Zusammenhang das Ergebnis des Überwachungsausdrucks mit dem Kontext-Element steht. Sie können mehrere Überwachungsausdrücke eingeben, wodurch Sie die Ergebnisse verschiedener Ausdrücke innerhalb desselben Kontext-Elements miteinander vergleichen können.

Variablen, die sich im Geltungsbereich befinden, werden einschließlich ihrer Werte im Bereich für Überwachungsausdrücke und Variablen angezeigt. Globale Elemente und Variablen können separat ein- und ausgeblendet werden. Unter Umständen erweist es sich als sehr nützlich, die Werte der Variablen innerhalb eines Kontext-Elements zusammen mit dem Ergebnis von Überwachungsausdrücken zu sehen.

Prozessoraufrufe eines Auswertungsschritts werden auf dem Register "Call Stack" des Call Stack- und Debug-Punkte-Bereichs angezeigt.

Wenn Breakpoints und Tracepoints gesetzt wurden, werden diese auf dem Register "Debug-Punkte" des Call Stack- und Debug-Punkte-Bereichs angezeigt.

 

Nähere Informationen zu diesen Funktionalitäten finden Sie in der jeweiligen Beschreibung dazu weiter unten.

 

Einrichten des Debug-Modus

Um in den Debug-Modus zu wechseln, klicken Sie im Dropdown-Menü des Befehls Auswertung/Debugging starten (F5) (links oben in der Symbolleiste; siehe Abbildung unten) auf Debugger starten. Im Debug-Modus werden die Bereiche "Überwachungsausdrücke", "Call Stack" und "Debug-Punkte" angezeigt. Um mit dem Debuggen des aktuellen Ausdrucks zu beginnen, klicken Sie auf Debugger starten oder drücken Sie F5.

XPXQWindowSelectEvalMode

Beachten Sie, dass der Debug-Modus nur bei der aktuellen Datei funktioniert; er kann nicht mit mehreren Dateien verwendet werden. Infolgedessen wird die Option Wo automatisch auf Aktuelle Datei gesetzt, wenn Sie in diesen Modus wechseln. Sie kann nicht geändert werden.

 

 

Ausführen des Debuggers

Das Debuggen eines XPath/XQuery-Ausdrucks erfolgt in den folgenden Schritten:

 

1.Machen Sie die XML/JSON-Datei, an der Sie den Ausdruck ausführen möchten, zur aktiven Datei.

2.Wählen Sie die XPath/XQuery/(Update)-Version des zu debuggenden Ausdrucks aus.

3.Geben Sie den XPath/XQuery-Ausdruck in das Ausdrucksfenster ein.

4.Setzen Sie die gewünschten Breakpoints oder Tracepoints. Ein Breakpoint ist ein Punkt, an dem die Auswertung unterbrochen wird. Ein Tracepoint ist ein Punkt in der Auswertung, der aufgezeichnet wird, sodass Sie einen zurückverfolgbaren Pfad der Auswertungsergebnisse zur Verfügung haben.

5.Wenn Sie auf Debugger starten klicken, wird die Auswertung in einem einzigen Schritt bis zum Ende ausgeführt, es sei denn, es wurde ein Breakpoint im Ausdruck markiert. Klicken Sie wiederholt auf Debugger starten, um nach jedem Breakpoint fortzufahren und bis zum Ende der Auswertung zu gelangen.

6.Mit Hilfe der Funktionen Einsteigen/Aussteigen/Überspringen können Sie sich Schritt für Schritt durch die Auswertung bewegen. Mit Hilfe der Funktion "Bis zum Cursor ausführen" können Sie auch direkt zum Ausführungsschritt, in den Sie den Cursor gesetzt haben, gelangen.

 

 

Einsteigen, Aussteigen und Überspringen von Auswertungsschritten

Mit der Funktion Einsteigen können Sie die Auswertung Schritt für Schritt durchgehen. Jeder Klick leitet Sie durch den entsprechenden Schritt der Auswertung. Der aktuelle Schritt wird im Ausdruck markiert (siehe Abbildung unten). Mit der Funktion Aussteigen gelangen Sie zur nächsthöheren Ebene und mit Überspringen werden Schritte auf niedrigeren Ebenen übersprungen und Sie gelangen zum nächsten Schritt auf derselben Ebene. Um die Schrittfunktionen auszuprobieren, kopieren Sie den unten stehenden XQuery 3.1-Ausdruck in das Ausdrucksfenster und klicken Sie auf die drei Schritt-Schaltflächen, um zu sehen, wie diese funktionieren.

 

 

 

In der Abbildung unten sehen Sie die Auswertung an der Stelle, an der die Verarbeitung bei Erreichen des Additionsschritts \$a + \$b während der ersten Verarbeitung der Schleife, d.h. wenn \$i=1, angehalten wird. In diesem Additionsschritt wird als Ergebnis (als Folge von 1+2) 3 angezeigt.

XPXQWindowDebug02

 

Breakpoints

Breakpoints sind Punkte, an denen der Debugger angehalten werden soll, nachdem er mit Debugger starten gestartet wurde. Sie eignen sich dazu, einen bestimmten Teil eines Ausdrucks zu analysieren. Wenn der Debugger an einem Breakpoint anhält, können Sie das Ergebnis überprüfen. Mit Hilfe der Funktion Einsteigen können Sie anschließend die Ergebnisse des nächsten Schritts der Auswertung anzeigen. Um einen Breakpoint zu setzen, platzieren Sie den Cursor an der Stelle in den Ausdruck, an der Sie den Breakpoint setzen möchten und klicken Sie auf die Symbolleisten-Schaltfläche Breakpoint einfügen/löschen (F9). Der Breakpoint wird daraufhin mit einem rot strichlierten Überstrich markiert. Um einen Breakpoint zu löschen, wählen Sie ihn aus und klicken Sie auf Breakpoint einfügen/löschen (F9).

 

Siehe auch Debug-Punkte weiter unten.

 

Tracepoints

Tracepoints sind Punkte, an denen die Ergebnisse aufgezeichnet und in der Ablaufverfolgungsstruktur des Ergebnisregisters (siehe Abbildung unten) angezeigt werden. Dadurch sehen Sie alle Auswertungsergebnisse bestimmter Teile des Ausdrucks. So wurden z.B. in der Abbildung unten Tracepoints bei \$a, \$b, local:plus(\$i, \$i+1) gesetzt. Die Ergebnisse dieser Tracepoints werden während der ersten Iteration durch die Schleife in der Ablaufverfolgungsstruktur angezeigt: \$a=1, \$b=2, und local:plus(\$i, \$i+1)=3.

 

Um einen Tracepoint zu setzen, platzieren Sie den Cursor an der Stelle in den Ausdruck, an der Sie den Tracepoint setzen möchten und klicken Sie auf die Symbolleisten-Schaltfläche Tracepoint einfügen/löschen (Umschalt+F9). Der Tracepoint wird daraufhin mit einem blau strichlierten Überstrich markiert (siehe Abbildung unten). Um einen Tracepoint zu löschen, wählen Sie ihn aus und klicken Sie auf Tracepoint einfügen/löschen (F9).

XPXQWindowDebug03Tracepoints
Anmerkung:Wenn an einer Stelle eines Ausdrucks sowohl ein Breakpoint als auch ein Tracepoint gesetzt wurde, so besteht der Überstrich aus abwechselnd gesetzten roten und blauen Strichen.

 

Siehe auch Debug-Punkte weiter unten.

 

Überwachungsausdrücke und Variablen

Überwachungsausdrücke und Variablen werden im Überwachungsausdrucks- und Variablenbereich (mittlerer unterer Bereich in der Abbildung unten) angezeigt.

Zum Erweitern/Reduzieren klicken

Überwachungsausdrücke

Überwachungsausdrücke sind Ausdrücke, die Sie entweder vor Beginn einer Auswertung oder während einer Unterbrechung der Auswertung eingeben können. Sie können für folgende Zwecke verwendet werden:

 

um bestimmte Bedingungen zu überprüfen. So wird z.B. in der Abbildung unten mit dem Überwachungsausdruck \$i=1 to 5 überprüft, ob die Variable \$i im angegebenen Bereich zu irgendeinem Zeitpunkt der Verarbeitung einen Wert hat. Das Ergebnis true besagt, dass diese Bedingung im aktuellen Verabeitungskontext erfüllt wird.

um Daten in einem bestimmten Kontext zu suchen. So könnten wir z.B. im Kontext eines Elements Company den Überwachungsausdruck @id eingeben, um den Kundencode des Unternehmens im XML-Zieldokument nachzuschlagen.

um zusätzliche Daten zu generieren. So könnte etwa mit dem Überwachungsausdruck if (\$i=1 to 5) then (concat("Iteration ", \$i)) else "Out of Loop" in der Abbildung oben ein passender String generiert werden, mit dem angegeben wird, in welcher Iteration der Schleife sich die Auswertung gerade befindet.

 

Um einen Überwachungsausdruck einzugeben, klicken Sie in der Symbolleiste des Bereichs auf Überwachung hinzufügen, geben Sie den XPath-Ausdruck ein und drücken Sie anschließend die Eingabetaste. Um einen Überwachungsausdruck zu entfernen, wählen Sie ihn aus und klicken Sie in der Symbolleiste auf Überwachungsausdruck entfernen. Wenn der Ausdruck während des Debuggens aus irgendeinem Grund (z.B. wenn sich eine seiner Variablen nicht im Geltungsbereich befindet) nicht korrekt ausgewertet werden kann, wird der Überwachungsausdruck rot angezeigt.

 

Variablen

Variablen, die im Ausdruck deklariert wurden und sich im aktuellen Auswertungsschritt im Geltungsbereich befinden, werden zusammen mit den jeweiligen aktuellen Werten angezeigt. So wurde z.B. in der Abbildung oben der Aufruf der Funktion local:plus erreicht. Die Variable \$i befindet sich in der Funktion local:loop im Geltungsbereich und wurde soeben auf 2 inkrementiert, daher wird \$i mit ihrem aktuellen Wert angezeigt. Sie können lokale und globale Variablen durch Klick auf die entsprechende Symbolleisten-Schaltfläche ein- und ausblenden.

 

Schaltflächen des Fensters

Beachten Sie, dass die folgenden Funktionalitäten über Symbolleisten-Schaltflächen des Fensters zur Verfügung stehen.

 

Symbol

Funktion

Weiter, Zurück

Wählt jeweils den nächsten bzw. vorhergehenden Eintrag in der Ergebnisliste aus

Ausgewählte Textzeile in die Zwischenablage kopieren

Kopiert die Wertespalte des ausgewählten Ergebniseintrags in die Zwischenablage. Um alle Spalten zu kopieren, aktivieren Sie den Befehl Beim Kopieren werden alle Spalten inkludiert (siehe unten)

Alle Nachrichten in die Zwischenablage kopieren

Kopiert die Wertespalte aller Ergebniseinträge, darunter auch leere Werte, in die Zwischenablage. Jeder Eintrag wird als separate Zeile kopiert.

Beim Kopieren werden alle Spalten inkludiert

Wechselt zwischen der Funktion zum Kopieren (i) aller Spalten und (ii) nur der Wertespalte. Das Spaltentrennzeichen ist ein einziges Leerzeichen.

Suchen

Öffnet ein Suchdialogfeld zum Suchen nach einem beliebigen String - darunter auch von Sonderzeichen - in der Ergebnisliste.

Vorheriges suchen

Sucht nach der vorhergehenden Instanz des zuletzt im Suchdialogfeld gesuchten Eintrags.

Weitersuchen

Sucht nach der nächsten Instanz des zuletzt im Suchdialogfeld gesuchten Eintrags.

Mit Child Nodes erweitern

Erweitert den ausgewählten Eintrag und alle seine Nachfahren

Mit Child Nodes reduzieren

Reduziert den ausgewählten Eintrag und alle seine Nachfahren

Zurücksetzen

Löscht die Ergebnisliste.

 

 

Call Stack

Auf dem Register Call Stack des Call Stack- und Debug-Punkte-Bereichs (rechter unterer Bereich in der Abbildung oben) werden die Prozessoraufrufe bis zu diesem Punkt im Debugging angezeigt. Der aktuelle Prozessoraufruf erscheint gelb markiert. Beachten Sie, dass nur die Aufrufe, die direkt zum aktuellen Auswertungsschritt geführt haben, angezeigt werden. So ist z.B. in der Abbildung oben der aktuelle Auswertungsschritt ein Ausdruck für eine arithmetische Berechnung innerhalb eines Funktionsaufrufs der Funktion local:plus. Obwohl dies die zweite Iteration von local:loop ist, werden die Prozessoraufrufe der ersten Iteration nicht angezeigt, da sich diese Aufrufe auf einer Parallelebene zur aktuellen Funktion befinden und nicht zu dieser Funktion geführt haben.

 

Debug-Punkte

Auf dem Register Debug-Punkte des Call Stack- und Debug-Punkte-Bereichs (rechter unterer Bereich in der Abbildung oben) werden die im Ausdruck gesetzten Breakpoints (rote Kreise) und Tracepoints (blaue Kreise) angezeigt. Jeder Debug-Punkt (Breakpoint oder Tracepoint) wird mit der jeweiligen Zeilen- und Zeichennummer angezeigt. So bedeutet etwa FunctionCall@7:17, dass sich in Zeile 7, Zeichen 17 ein Debug-Punkt befindet.

XPXQWindowDebugPoints

Beachten Sie die folgenden Funktionalitäten:

 

Durch Doppelklick auf Break-Bedingung eingeben, Eingabe des Ausdrucks für die Bedingung und Drücken der Eingabetaste können Sie eine Break-Bedingung für Breakpoints eingeben. Dieser Breakpoint ist nur dann aktiv, wenn das Resultat der Auswertung der Break-Bedingung true ist. So aktiviert die Break-Bedingung \$i=3 in der Abbildung oben den Breakpoint in diesem Funktionsaufruf nur, wenn der Wert von \$i 3 ist. In der Abbildung sehen Sie, dass die Auswertung an diesem Breakpoint angehalten wurde.

Durch Klick auf die entsprechende Symbolleisten-Schaltfläche Alle Debug-Punkte aktivieren und Alle Debug-Punkte deaktivieren können Sie alle Debug-Punkte aktivieren bzw. deaktivieren. Wenn ein Debug-Punkt deaktiviert ist, bleibt er bis zu seiner erneuten Aktivierung für alle Auswertungen deaktiviert.

Sie können auch Unterbrechungen in der Verarbeitung aktivieren/deaktivieren, wenn ein Verarbeitungsfehler auftritt, indem Sie die entsprechende Symbolleisten-Schaltfläche aktivieren/deaktivieren.

Einzelne Breakpoints können im dazugehörigen Kontextmenü bzw. über die Kreissymbole aktiviert bzw. deaktiviert werden. Wenn ein Kreissymbol grau ist, wurde der Debug-Punkt deaktiviert.

 

Anzeigeoptionen

Wenn Sie rechts oben im Dialogfeld "XPath/XQuery" auf die Schaltfläche Optionen anzeigen (Zahnradsymbol) klicken, wird ein Dialogfeld angezeigt, in dem Sie Anzeigeoptionen des Ergebnisbereichs und des Bereichs für Überwachungsausdrücke und Variablen definieren können. Sie können für jeden Bereich separat Folgendes festlegen:

 

Ergebnisse als erweiterbare Baumstruktur oder als serialisierter XML-String (ein Node wird nur zum dem Zeitpunkt, zu dem er in ein XML-Dokument geschrieben wird, als Textstring angezeigt) und

Attribute inline. Dies bedeutet, dass Attribute und ihre Werte (zusätzlich zur Anzeige in der Baumstruktur des Node) in derselben Zeile wie das Element angezeigt werden.

 

© 2017-2023 Altova GmbH