XPath Debugger
Mit Hilfe des XPath Debuggers des XPath/XQuery-Fensters können Sie einen XPath-Ausdruck im Kontext der geladenen Datei(en) debuggen. Sie können das XPath/XQuery-Fenster über die folgenden Eintrittspunkte aufrufen:
•Es wird im Design immer dann geöffnet, wenn ein XPath-Ausdruck eingegeben oder bearbeitet werden kann, z.B. bei der Eingabe von Ausdrücken zur Definition von Werten von Stilen und Eigenschaften.
•Im Simulator kann es durch Klicken auf die Schaltfläche XPath auswerten im Fenster "Seitenquellen" geöffnet werden.
•Wenn der Simulator an einer Aktion anhält, können Sie den XPath Debugger über die Schaltfläche In XPath einsteigen des Aktionsdebuggers aufrufen.
Anmerkung: | In den ersten beiden oben angeführten Situationen können Sie einen beliebigen XPath-Ausdruck eingeben und diesen anhand jeder beliebigen XML-Datei, die Sie in den Debugger laden müssen, debuggen. In der dritten oben angeführten Situation wird jedoch der für die aktuelle Aktion spezifische XPath-Ausdruck debuggt. Dabei wird dieser Ausdruck anhand der Seitenquellen der aktuellen Aktion debuggt, folglich ist die Option zum Laden einer XML-Datei deaktiviert. |
Die Beschreibungen und Abbildungen in diesem Abschnitt beziehen sich auf den XPath Debugger, wenn er über das Fenster "Seitenquellen" des Simulators aufgerufen wird. Der Debugger verhält sich unabhängig vom Kontext, in dem er aufgerufen wurde, gleich. Beachten Sie jedoch, dass die Option zum Laden einer XML-Datei deaktiviert ist, wenn der Debugger im dritten oben genannten Fall gestartet wird.
Starten des XPath Debuggers
Um den Xpath Debugger aufzurufen, klicken Sie im Dropdown-Menü des Befehls Auswertung/Debugging starten (siehe Abbildung unten) auf Debugger starten. Sie können zwischen der Ausdruckserstellung (Hilfe bei der Erstellung des Ausdrucks) und dem Debugger wechseln.
Wählen Sie entweder vor oder nach Eingabe eines XPath/XQuery-Ausdrucks eine XML-Datei aus, an der der Ausdruck ausgeführt werden soll (siehe Ausführen des Debuggers weiter unten). Um mit dem Debuggen zu beginnen, klicken Sie auf Auswertung/Debugging starten (F5). Der Debugger führt den Ausdruck an der geladenen XML-Datei aus und zeigt die Ergebnisse in den Bereichen im unteren Teil des Fensters an.
Schaltflächen für die Konfiguration des XPath Debuggers
|
Layout des XPath Debuggers
Der XPath Debugger hat neben dem Ergebnisbereich des Auswertungsmodus zwei zusätzliche Bereiche (siehe Abbildung unten):
•der Bereich für Überwachungsausdrücke und Variablen. Sowohl Variablen als auch Überwachungsausdrücke werden im selben Bereich angezeigt
•Der Call Stack- und Debug-Punkte-Bereich. Jeder davon hat auf der rechten Seite des Bereichs ein eigenes Register.
Im XPath Debugger 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 Teil des Ausdrucks, der soeben ausgewertet wird, gelb markiert (siehe Abbildung oben), während das Ergebnis der Auswertung dieses Schritts im Ergebnisbereich angezeigt wird. So wurden etwa in der Abbildung oben alle Order-Elemente, die ein untergeordnetes Element namens CustomerCode mit dem Wert '456' haben, ausgewählt.
•Sie können Breakpoints setzen, an denen die Auswertung angehalten werden soll, damit Sie Ergebnisse überprüfen können. Bei Klick auf die Symbolleisten-Schaltfläche Debugger Starten (F5) können Sie die Auswertung durchlaufen lassen, wobei nur bei Breakpoints angehalten wird. Dies geht schneller, als wenn Sie bei jedem Schritt mit Einsteigen (F11) anhalten.
•Sie können Tracepoints setzen, um die Auswertungsergebnisse an den als Tracepoints markierten Stellen zu sehen. Die Auswertung wird dabei nicht angehalten (außer bei Breakpoints), sondern die Tracepoint-Ergebnisse werden in einer Liste im Ergebnisbereich angezeigt.
•Überwachungsausdrücke sind XPath-Ausdrücke, die bei jedem Schritt des Debug-Vorgangs ausgewertet werden. Sie können damit Informationen bei einzelnen Schritten wie z.B. Dokumentdaten oder Auswertungsaspekte überprüfen. Überwachungsausdrücke sind äußerst nützlich, wenn Sie zusammen mit Breakpoints verwendet werden.
•Variablen, die sich beim aktuellen Schritt im Geltungsbereich befinden, werden einschließlich ihrer Werte im Bereich für Überwachungsausdrücke und Variablen angezeigt.
•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.
Ausführen des Debuggers
Das Debuggen eines XPath-Ausdrucks erfolgt in den folgenden Schritten:
1.Geben Sie den XPath-Ausdruck in den Ausdrucksbereich ein.
2.Stellen Sie sicher, dass die XML-Datei, auf die Sie den XPath-Ausdruck anwenden möchten, geladen ist. Falls sie nicht geladen ist, laden Sie diese über die Schaltfläche Laden (unterhalb des Schemastrukturbereichs; siehe Abbildung oben).
3.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, an dem das Ergebnis aufgezeichnet wird, sodass Sie einen zurückverfolgbaren Pfad der Auswertungsergebnisse zur Verfügung haben.
4.Wenn Sie auf Debugger starten klicken, wird die Auswertung am ersten Breakpoint unterbrochen. Klicken Sie wiederholt auf Debugger starten, um nach jedem Breakpoint fortzufahren und bis zum Ende der Auswertung zu gelangen.
5.Mit Hilfe der Funktionen Einsteigen/Aussteigen/Überspringen können Sie sich (anstatt von Breakpoint zu Breakpoint) Schritt für Schritt durch die Auswertung bewegen.
6.Sie können den Debugger auch bis zu einem bestimmten Punkt im XPath-Ausdruck ausführen: (i) Markieren Sie den Punkt durch Setzen des Cursors an diese Position und (ii) klicken Sie auf die Symbolleisten-Schaltfläche Bis zum Cursor ausführen.
Schaltflächen für das Debuggen
|
Einsteigen in, Aussteigen aus 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 zu probieren, verwenden Sie den Ausdruck in der Abbildung unten ($ORDERS/Orders/Order[CustomerCode="456"]/@number) und klicken Sie auf die drei Schritt-Schaltflächen, um zu sehen, wie diese funktionieren. Bei der XML-Datei in diesem Beispiel handelt es sich um eine Seitenquelle aus dem Tutorial Unterseiten und Sichtbarkeit. Öffnen Sie diese Datei und gehen Sie folgendermaßen vor: (i) Starten Sie den Simulator; (ii) klicken Sie auf der im Simulator angezeigten Toplevel-Seite auf Show All Orders. (iii) Klicken Sie im Fenster "Seitenquellen" des Simulators auf die Symbolleisten-Schaltfläche "XPath auswerten", (iv) wechseln Sie zum Debugger (siehe oben).)
In der Abbildung unten sehen Sie die Auswertung an der Stelle, an der die Verarbeitung bei Erreichen des Locator-Schritts Order[CustomerCode='456'] angehalten wird. In diesem Schritt sehen Sie im Ergebnis die zwei Order-Elemente, von denen jeder ein CustomerCode-Child-Element mit dem Wert '456' enthält. Die beiden Elemente werden (mit ihrem gesamten Node-Inhalt) im Ergebnisbereich angezeigt.
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).
Anmerkung: | Sie können einen Breakpoint von Bedingungen abhängig machen, indem Sie die Bedingung im Bereich "Debug-Punkte" in der Auflistung des Breakpoint eingeben. Siehe Debug-Punkte weiter unten. |
Anmerkung: | Sie können den XPath Debugger direkt von einer Simulation aus starten, um XPath-Ausdrücke, in denen Breakpoints gesetzt wurden, zu debuggen. Starten Sie dazu den MT Debugger im Breakpoints-Modus. |
Tracepoints
Tracepoints sind Punkte, an denen die Ergebnisse aufgezeichnet und in der Ablaufverfolgungsstruktur des Ergebnisbereichs (siehe Abbildung unten) angezeigt werden. Mit Hilfe von Tracepoints sehen Sie alle Auswertungsergebnisse bestimmter Teile des Ausdrucks. So wurden z.B. in der Abbildung unten Tracepoints im Node OrderAmount gesetzt. Die Ergebnisse dieser Tracepoints werden in der Ablaufverfolgungsstruktur angezeigt.
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).
Anmerkung: | Wenn an derselben 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, Variablen und Call Stack
Überwachungsausdrücke und Variablen werden im Überwachungsausdrucks- und Variablenbereich (mittlerer unterer Bereich in der Abbildung unten) angezeigt. Sie können die Ansicht in diesem Bereich filtern, um (i) das aktuelle Kontext-Datenelement, (ii) lokale Variablen, (iii) globale Variablen anzuzeigen. Aktivieren/Deaktivieren Sie dazu die entsprechende Symbolleisten-Schaltfläche. Das aktuelle Kontext-Datenelement ist der Node, der gerade ausgewertet wird.
Überwachungsausdrücke
Überwachungsausdrücke sind XPath-Ausdrücke, die Sie entweder vor Beginn einer Auswertung oder während einer Unterbrechung der Auswertung eingeben können. Der Ausdruck wird bei jedem Auswertungsschritt, an dem der Debugger anhält, im Kontext des aktuellen Node ausgewertet. Überwachungsausdrücke können für folgende Zwecke verwendet werden:
•um bestimmte Bedingungen zu überprüfen. So wird etwa in der Abbildung oben mit dem Überwachungsausdruck $i/CustomerCode="789" überprüft, ob das aktuelle Order-Element einen CustomerCode mit dem Wert "789" hat. Das Ergebnis false für das erste Order-Element sagt uns, dass diese Bestellung keinen CustomerCode-Wert "789" hat. (Wie Sie im Ergebnisbereich sehen, ist der Wert "456".)
•um Daten in einem bestimmten Kontext zu suchen. So haben wir etwa in der Abbildung oben, den Überwachungsausdruck $i/CustomerCode, $i/OrderDate eingegeben, um diese Informationen der aktuellen Bestellung zu überprüfen.
•um zusätzliche Daten zu generieren. So haben wir etwa in der Abbildung oben den Überwachungsausdruck count($ORDERS//Order) eingegeben, um alle Order-Elemente zu zählen.
Um einen Überwachungsausdruck einzugeben, klicken Sie in der Symbolleiste des Bereichs auf Überwachung hinzufügen, doppelklicken Sie anschließend auf den neuen Eintrag, um den XPath-Ausdruck einzugeben 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. Sie werden unterhalb der Überwachungsausdrücke angezeigt.
So wurde z.B. in der Abbildung oben die Verarbeitung am Breakpoint an der Variablen $i angehalten. Die Variable $i befindet sich in diesem Auswertungsschritt im Geltungsbereich. $i wird daher mit ihrem aktuellen Wert, nämlich dem ersten Order-Element, angezeigt. Da der Root-Node $ORDERS des Dokuments ebenfalls eine Variable ist, wird er ebenfalls mit seinem Inhalt, der die Dokument-Root ist, angezeigt.
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.
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 wird mit der jeweiligen Zeilen- und Zeichennummer angezeigt. So bedeutet etwa AxisStep@2:12, dass sich in Zeile 2, bei Zeichen 12 des Ausdrucks im Ausdrucksbereich ein Debug-Punkt befindet.
Um an den einzelnen Breakpoints im Ausdruck anzuhalten, klicken Sie auf Debugger starten (F5).
Beachten Sie die folgenden Funktionalitäten:
•Sie können jeden Breakpoint von einer bestimmten Bedingung abhängig machen, indem Sie eine Break-Bedingung dafür eingeben. (i) Doppelklicken Sie dazu im Bereich Debug-Punkte auf den Eintrag Anhaltebedingung eingeben, (ii) geben Sie den Ausdruck für die Bedingung ein und (iii) drücken Sie die Eingabetaste. Dieser Breakpoint ist nur dann aktiv, wenn das Resultat der Auswertung der Bedingung true ist. So wird z.B. in der Abbildung oben mit der Break-Bedingung $i/CustomerCode="456" der Breakpoint bei $i (d.h., dem aktuellen Order-Element) aktiviert, wenn das Child-Element CustomerCode des Order-Elements den Wert "456" hat. Die Verarbeitung hält somit nur bei den Bestellungen (order) an, deren Kundencode (customer code) 456 ist. In der Abbildung sehen Sie die Auswertung, die bei der sechsten Bestellung, bei der es sich um eine solche Bestellung handelt, angehalten wurde. Bei Bestellungen mit anderen Kundencodes wird der Breakpoint nicht ausgelöst. (Sie können wie in der Abbildung oben einen Überwachungsausdruck definieren, um zu zeigen, welche Bestellungen den Kundencode 456 haben: nämlich die Bestellungen mit der Nummer 001 und 006.)
•Durch Klick auf die entsprechende Symbolleisten-Schaltfläche Alle Debug-Punkte aktivieren und Alle Debug-Punkte deaktivieren (grün umrandete Schaltflächen in der Abbildung oben) 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.
•Einzelne Breakpoints können im dazugehörigen Kontextmenü aktiviert bzw. deaktiviert werden.
•Tracepoints werden einfach mit den dazugehörigen Informationen aufgelistet. Sie können aktiviert/deaktiviert werden.
•Wenn Sie auf Alle Debug-Punkte löschen klicken, werden alle Breakpoints und Tracepoints im Design entfernt.
•Wenn ein Fehler, für den keine Behandlung definiert wurde, auftritt, kann dieser ausfindig gemacht werden. Aktivieren Sie einfach die Ein/Aus-Symbolleisten-Schaltfläche Bei nicht behandeltem Fehler anhalten. Daraufhin hält der Debugger bei solchen Fehlern an.
Symbolleisten-Schaltflächen in den Bereichen
Die Bereiche des "XPath/XQuery-Fensters im Debug-Modus (siehe Abbildung oben) enthalten Schaltflächen für die Navigation, Suche und Kopierfunktionen. Diese Schaltflächen werden in der Tabelle unten von links nach rechts beschrieben. Die dazugehörigen Befehle finden Sie auch im Kontextmenü der aufgelisteten Einträge.
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. |
Zurücksetzen | Löscht die Ergebnisliste. |
Schließen des XPath Debuggers
Um den XPath Debugger zu schließen, klicken Sie auf Auswertung/Debugging beenden.