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.xml)

<entry level="INFO" msg="Message" line="5" message="Hello, world"></entry>
<entry level="INFO" msg="Message" line="6" message="1"></entry>

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.xml) geschrieben, die verschiedene Informationen enthält. Möchte man möglichst viele Ausgaben erhalten, kann man den Log-Level hoch setzen: mit sp --loglevel debug bekommt man viele Informationen

<log loglevel="DEBUG" time="Jan 10 12:30:02" version="4.17.0" pro="yes">
  <entry level="DEBUG" msg="Start file" filename="sdini.lua"></entry>
  [...]
  <entry level="INFO" msg="Start processing"></entry>
  [...]
  <entry level="INFO" msg="Running LuaTeX version 1.15.0 on macosx"></entry>
  <entry level="DEBUG" msg="Loading hyphenation pattern" filename="hyph-en-gb.pat.txt"></entry>
  <entry level="DEBUG" msg="File lookup" source="hyph-en-gb.pat.txt" found="/home/user/work/software/publisher/src/hyphenation/hyph-en-gb.pat.txt"></entry>
  <entry level="DEBUG" msg="Language ID" id="0"></entry>
  <entry level="DEBUG" msg="Preload font" name="texgyreheros-regular.otf" size="10.0" id="1"></entry>
  <entry level="DEBUG" msg="Preload font" name="texgyreheros-regular.otf" size="8.0" id="2"></entry>
  <entry level="DEBUG" msg="Preload font" name="texgyreheros-bold.otf" size="10.0" id="3"></entry>
  <entry level="DEBUG" msg="Preload font" name="texgyreheros-bold.otf" size="8.0" id="4"></entry>
  <entry level="DEBUG" msg="Preload font" name="texgyreheros-italic.otf" size="10.0" id="5"></entry>
  <entry level="DEBUG" msg="Preload font" name="texgyreheros-italic.otf" size="8.0" id="6"></entry>
  <entry level="DEBUG" msg="Preload font" name="texgyreheros-bolditalic.otf" size="10.0" id="7"></entry>
  <entry level="DEBUG" msg="Preload font" name="texgyreheros-bolditalic.otf" size="8.0" id="8"></entry>
  <entry level="INFO" msg="Define font family" name="text" size="10.0" leading="12.0" id="1"></entry>
  <entry level="INFO" msg="speedata Publisher Pro"></entry>
  <entry level="DEBUG" msg="Checksum" filename="layout.xml" md5="d5251dcca6e8bc94331d395f9ee4ea69"></entry>
  <entry level="DEBUG" msg="File lookup" source="publisher-aux.xml" found="/home/user/work/software/publisher/spielwiese/publisher-aux.xml"></entry>
  <entry level="DEBUG" msg="Checksum" filename="publisher-aux.xml" md5="81c05dd1e89a65fc2a8a31348f5ccb7c"></entry>
  <entry level="DEBUG" msg="Using this file:" file="/home/user/work/software/publisher/spielwiese/data.xml"></entry>
  <entry level="DEBUG" msg="Checksum" filename="data.xml" md5="cbe30e8afae15473d28be5d8272ddf95"></entry>
  <entry level="INFO" msg="Create page" type="Default Page" pagenumber="1"></entry>
  <entry level="INFO" msg="Number of rows: 28, number of columns = 19"></entry>
  <entry level="INFO" msg="Create font metrics" name="texgyreheros-regular.otf" size="10.0" id="1" mode="harfbuzz"></entry>
  <entry level="DEBUG" msg="File lookup" source="texgyreheros-regular.otf" found="/home/user/work/software/publisher/fonts/texgyreheros/texgyreheros-regular.otf"></entry>
  <entry level="DEBUG" msg="PlaceObject" type="Textblock" col="1" row="1" wd="19" ht="1" page="1"></entry>
  <entry level="INFO" msg="Shipout page 1"></entry>
  <entry level="INFO" msg="Stop processing data"></entry>
  <entry level="INFO" msg="0 errors occurred"></entry>
  <entry level="INFO" msg="Duration: 0.014821 seconds"></entry>
</log>

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.