Tipps zum Debugging

Beachten Sie beim Debugging von Berechnungen und Skripten die folgenden Tipps.

Musterdaten

Denken Sie daran, im Dialogfeld „Formulareigenschaften“ eine Vorschaudatendatei anzugeben. Hierdurch werden die Daten jedoch nicht in der endgültigen PDF-Datei gespeichert.

Masterseiten

Legen Sie für das Debugging von Masterseiten auf jeder Masterseite ein anderes Objekt ab, um festzustellen, welches Objekt angegeben wurde.

Erste Seite eines Formulars

Designer orientiert sich am Stammteilformular, um festzustellen, auf welcher Seite das Formular beginnt. Geht die erste Seite nicht aus dem Stammteilformular hervor, wird standardmäßig die erste Masterseite verwendet.

Inkrementelles Debugging

Beginnen Sie beim Debugging eines Formularentwurfs damit, nacheinander einzelne Teile des Formulars zu entfernen. Führen Sie den Vorgang so lange durch, bis das Problem nicht mehr reproduziert werden kann. Versuchen Sie die Quelle des Problems einzugrenzen, nachdem Sie alle Skript- und Objekteigenschaften überprüft haben. Um Teilformulare zu debuggen, können Sie das jeweilige Teilformular mit einer dicken farbigen Umrandung versehen. Sie haben auch die Möglichkeit, eine Füllfarbe zu verwenden. Mit Hilfe von Farben bzw. Füllfarben können Sie verdeutlichen, welches Teilformular verwendet wird und bis wohin das Teilformular reicht. Diese Vorgehensweise empfiehlt sich, wenn Sie die Begrenzungen eines Objekts ermitteln und feststellen möchten, warum das Objekt an einem bestimmten Ort platziert ist.

Hierarchieansicht

Zeigen Sie den Formularentwurf in der Hierarchieansicht an, um eine bessere Einsicht zu erhalten. Die Reihenfolge der Objekte in der Hierarchie entspricht der Reihenfolge ihrer Platzierung auf der Seite. Einige Objekte sind nicht anklickbar, wenn sie untereinander angeordnet sind.

Skriptfehlermeldungen

In Designer werden Skriptfehlermeldungen bei der Vorschau des Formulars auf der Registerkarte „Protokoll“ der Palette „Bericht“ angezeigt. Wenn der Formularentwurf FormCalc-Skripten enthält und der Fehler auf dem Server auftritt, werden Warnungen auf der Registerkarte „Protokoll“ angezeigt. Tritt der FormCalc-Skriptfehler auf dem Client auf, erfolgt die Anzeige der Meldung in Adobe Reader oder Acrobat.

Das Vorhandensein eines Fehlers in einem FormCalc-Skript verhindert die Ausführung des Skripts.

Bei Vorhandensein eines Fehlers in einem JavaScript wird das Skript bis zur Fehlerposition ausgeführt.

Syntaxfehler in FormCalc

Syntaxfehler in FormCalc sind bisweilen schwer zu beheben. Wenn die Meldung „Syntaxfehler bei Token '%2' in Zeile %3, Spalte %1“ angezeigt wird, enthält %1 in der Regel das Token (Wort), das sich am nächsten zur Fehlerposition befindet. Das Token ist jedoch möglicherweise korrekt und die Meldung steht lediglich durch die Nähe zur Fehlerposition in Zusammenhang mit dem Fehler. Das folgende Skript generiert beispielsweise den Fehler 7008: „Syntaxfehler bei Token then in Zeile x, Spalte y.“

var b = abc(1) 
if (b ne 1) then 
//comment 

Das Problem wird dadurch verursacht, dass ein endif-Token im Skript fehlt. Das letzte korrekte Token ist then (Kommentare zählen nicht als Token). Das Problem wird durch Einfügen einer endif-Anweisung am Ende des Skripts behoben.

In einem Skriptobjekt definierte Funktionen

Sie können nur Funktionen aufrufen, die mit einem JavaScript-Skript in einem Skriptobjekt definiert sind. Ändern Sie daher die Skriptsprache im Skript-Editor in JavaScript. Anderenfalls werden Sie eventuell in einer Meldung informiert, dass Designer das Skriptobjekt nicht auflösen kann. Derselbe Fehler kann auftreten, wenn ein Syntaxproblem im Skriptobjekt auftritt.

Webdienstaufrufe

Verwenden Sie beim Erstellen von Webdienstaufrufen das postExecute-Ereignis, um die Rückgabewerte sowie etwaige Fehlermeldungen des Webdienstes anzuzeigen.

Lange SOM-Ausdrücke

Drücken Sie bei der Eingabe langer SOM-Ausdrücke mit mehreren Ebenen die Strg-Taste und klicken Sie im Zeichenbereich auf das Objekt. Der Befehl fügt den SOM-Ausdruck des Objekts in das Skript ein. Der SOM-Ausdruck ist relativ zu dem Objekt, in dem das Skript enthalten ist. Um den absoluten SOM-Ausdruck einzufügen, drücken Sie die Tastenkombination Strg+Umschalt und klicken Sie auf das Objekt. Diese Befehle sind nur aktiv, wenn Sie in der Entwurfsansicht auf Objekte klicken. In der Hierarchieansicht sind sie deaktiviert.

SOM-Ausdrücke testen

Tritt ein Fehler bei einem langen SOM-Ausdruck auf, beginnen Sie beim Stamm des Ausdrucks und testen Sie die einzelnen Punkte mit className, bis Sie zum Problem gelangen. Beispiel: Testen Sie a.b.c.d, indem Sie beim Stamm beginnen:

  • console.println(a.className)

  • console.println(a.b.className)

  • console.println(a.b.c.className)

  • console.println(a.b.c.d.className)

Skriptobjekte für das Debuggen von Formularentwürfen verwenden

Verwenden Sie ein Skriptobjekt (z. B. ein Fragment) als Hilfe beim Debuggen von Formularentwürfen:

  • Geben Sie den Dump einer Node-Hierarchie unter einer Node aus.

  • Geben Sie den Wert einer Eigenschaft oder das Attribut einer Node aus.

  • Geben Sie aus, ob für die Node eine Eigenschaft oder ein Attribut angegeben wurde.

  • Geben Sie den SOM-Ausdruck einer Node aus.

  • Geben Sie den xml src-Code einer bestimmten Node aus.

Beispiel eines Skriptobjekts mit verschiedenen Debugging-Funktionen:

<script contentType="application/x-javascript" name="XFADEBUG"> 
//This script object provides several tracing functions to help debug a form design  
//Dump out node hierarchy to console.println() 
function printNode(node) {... } 
//Dump out SOM expression to console.println() function printSOM(node) {... } 
//Dump out property or attribute value function printValue(node, attrOrPropertyName) {...} 
function printXMLSource(node) { ....} 
function printHasPropertySpecified(node, prop) {...}\\ 
</script>

Beim Formularentwurf zu vermeidende Fehler

  • Der Aufruf von xfa.layout.relayout(). bei docReady verursacht Probleme, weil das docReady-Ereignis jeweils bei Fertigstellung des Layouts ausgelöst wird.

  • Das Platzieren eines Containers mit Textfluss in einem positionierten Container verursacht Probleme mit Seitenumbrüchen, überlagerten Objekten und sich wiederholenden Teilformularen. Das Stammteilformular ist ein Container mit Textfluss. Nutzen Sie diesen Vorteil und platzieren Sie die Container mit Textfluss im Stammteilformular. Entfernen Sie die Teilformulare der Seite nach Fertigstellung des Layouts. Stellen Sie alternativ dazu die Teilformulare der Seite auf „Textfluss“ ein.

  • Problem mit leeren Seiten (Acrobat 7.1 oder früher). Beim Entwurf des Formulars wird eine leere Seite angezeigt, wenn das Teilformular nicht in die Begrenzung des Inhaltsbereichs passt. Um das Problem mit der leeren Seite zu beheben, passen Sie entweder die Größe des Teilformulars an oder lassen Sie Umbrüche zwischen den Seiten zu. Verwendet der Benutzer Acrobat 7.1 oder früher, wird das Teilformular der zweiten Ebene auf einer anderen Seite angezeigt.