Fehlersuche / Debugging

Nicht immer klappt die Ausgabe, wie sie soll. Manchmal sind Objekte zu breit, manchmal wird das falsche Textformat genommen und gelegentlich sieht die Tabelle nicht so aus, wie sie eigentlich sollte. Damit die Fehlersuche nicht zu schwierig wird, gibt es im speedata Publisher diverse Hilfen. Dafür gibt es den Befehl <Trace>, der verschiedene Schalter anbietet. Dies sind (mit Voreinstellung):

<Trace
    assignments="no"
    objects="no"
    verbose="no"
    grid="no"
    gridallocation="no"
    hyphenation="no"
    kerning="no"
    textformat="no"
    />
assignments

Gibt auf der Konsole den Wert der Zuweisung (<SetVariable>) aus.

objects

Zeichnet eine Linie um einzelne Objekte.

verbose

Erhöht die Ausgabe auf der Konsole (Protokoll-Datei).

grid

Zeichnet das Raster. Siehe Abschnitt Raster.

gridallocation

Zeichnet die Rasterbelegung. Siehe Abschnitt Raster.

hyphenation

Markiert die Stellen, an denen die Wörter umbrochen werden dürfen (Silbentrennung).

kerning

Markiert die Stellen, an denen die Schriftart Unterschneidungen einfügt.

textformat

Erzeugt über jeder Textzeile einen Tooltip, der das benutzte Textformat anzeigt. Siehe das Beispiel im Abschnit Textformate.

Nachrichten

Neben den Möglichkeiten, die der Befehl <Trace> liefert, gibt es noch die Möglichkeit, Nachrichten in der Logdatei auszugeben:

<Message select="'Hello, world!'"/>
<Message select="sd:current-page()"/>

Die Ausgaben erscheinen in der Logdatei (publisher.protocol)

Message: "Hello, world!"
Message: "1"

Den Befehl <Message> kann man mit error="yes" anweisen, eine Fehlermeldung auszugeben (anstelle einer Nachricht). Ebenso kann man den Fehlercode bestimmen, der beim Beenden des Publishers zurückgegeben wird. Siehe den Befehl <Message> in der Referenz.

Statusdatei und Protokolldatei

Zum Ende des Laufs werden zwei Dateien auf die Festplatte geschrieben, die bei der Fehlersuche behilflich sein können. Die Datei publisher.status ist eine XML-Datei, die die Fehlermeldungen und anderen Nachrichten (über den Befehl <Message>) enthält. Das Beispiel oben mit den zwei Nachrichten ergibt die folgende Datei:

<Status>
  <Errors>0</Errors>
  <Message>Hallo Welt!</Message>
  <Message>1</Message>
  <DurationSeconds>1</DurationSeconds>
</Status>

Ebenso wird eine etwas ausführlichere Protokolldatei (publisher.protocol) geschrieben, die verschiedene Informationen enthält.

Protocol file for speedata Publisher (2.9.2)
Time: Mon Feb 20 11:03:25 2017
---------------------------------------------
Start processing
Talking to server on port 56486
LuaTeX version 79.1
Loading hyphenation patterns "hyph-en-gb.pat.txt".
Language id: 0
Loading layout instructions "/tmp/layout.xml"
DefineFontfamily, family=2, name="Überschrift"
Loading aux file "/tmp/publisher-aux.xml"
Loading data file "/tmp/data.xml"
Page of type "Default Page" created (1)
Number of rows: 28, number of columns = 19
PlaceObject: Textblock in row 1 and column 1, width=19, height=1 (page 1)
Message: "Hallo Welt!"
Message: "1"
Stop processing data
0 errors occurred
Duration: 0.223866 seconds

Wie Sie Hilfe erhalten

Wenn alle Fehlersuche fehlschlägt oder wenn Sie Fragen oder Kommentare haben, die Sie mit anderen teilen möchten, können Sie die folgenden Ressourcen nutzen:

Jedes Feedback ist willkommen und hilfreich. Beachten Sie jedoch: Bezahlter Support wird immer gegenüber unbezahltem Support priorisiert. Wenn Sie also einen Feature-Wunsch haben oder einen Bug-Fix benötigen, ziehen Sie bitte in Betracht, einen Support-Plan zu kaufen oder dieses Projekt auf Github zu sponsern, um auf die Überholspur zu kommen.

Feature-Requests auf Github werden alle gesehen und auf einer nicht-öffentlichen Liste notiert, aber irgendwann von Github geschlossen, um die Issue-Liste sauber zu halten.

Wenn Sie einen Fehlerbericht haben: Bitte folgen Sie der einfachen Richtlinie: Machen Sie ein Beispiel, das so klein wie möglich ist, aber den Fehler zeigt. Sonst kann ich nicht sehen, was schief läuft.