# Fehlersuche

Ab der Version 7.00.024 gibt es auch einen Debugger für den ELOas. Es wird die in der Rhino-Engine vorhandene Debug Engine verwendet. Diese kann über einen Konfigurationsparameter aktiviert werden.

<entry key="debug">true</entry>

ELO Automation Services Debugger

Abb.: ELO Automation Services Debugger

Zum Betrieb des Debuggers sollte der ELOas lokal auf der Entwicklermaschine ausgeführt werden. Zudem sollte er als Konsolenprozess und nicht als Windows Dienst gestartet werden. Andernfalls funktioniert der Debugger unter Windows Vista oder Windows 7 nicht mehr.

Falls Sie mehrere aktive Rulesets haben, gibt es für jeden ein eigenes Debugger-Fenster. Sie können über den Menüeintrag Window zwischen den einzelnen Ansichten umschalten.

Im Debugger können Sie Breakpoints auf einzelne Funktionen setzen und Variableninhalte inspizieren oder verändern. Die Ausführung können Sie dann im Einzelschritt oder Ausführungsmodus fortsetzen.

Eigenschaften von Apache Tomcat

Abb.: Eigenschaften von Apache Tomcat

# Syntaxfehler im Skript

Wenn das Skript einen Syntaxfehler aufweist, dann kann die JavaScript-Verarbeitung nicht gestartet werden. Solche Fehler haben den Vorteil, dass sie direkt beim Programmstart sichtbar werden und im Status-Dialog des ELOas angezeigt werden können.

Syntaxfehler im Skript

Abb.: Syntaxfehler im Skript

Zur Unterstützung bei der Fehlersuche wird im ELOas Report beim Start das komplette generierte JavaScript-Programm mit allen eingebundenen Modulen protokolliert. Die in der Anzeige aufgelistete Fehlernummer bezieht sich auf diesen Abschnitt des Reports (ab der Stelle "//Import the IndexServer API classes").

14:28:07,681 DEBUG (WorkingSet.java:368) - load JavaScript Templates,
        Parent GUID=(23594D10-4704-4FF9-938B-136792051D67)
14:28:07,744 DEBUG (WorkingSet.java:385) - Script file found: Base Templates
14:28:07,744 DEBUG (WorkingSet.java:385) - Script file found: Imports
14:28:07,744 DEBUG (WorkingSet.java:385) - Script file found: ELO Utils
14:28:07,759 DEBUG (WorkingSet.java:385) - Script file found: DB Access
14:28:07,759 DEBUG (WorkingSet.java:385) - Script file found: Document Export
14:28:07,759 DEBUG (WorkingSet.java:385) - Script file found: Dummy Modul mit
                                           Namenskonflikt
14:28:07,759 DEBUG (WorkingSet.java:276) - loadItems,
        Parent GUID=(9DAC7E8D-1467-4820-B53B-D27CCB5F06C0)
14:28:07,822 DEBUG (WorkingSet.java:286) - Number of Child entries: 1
14:28:07,822 DEBUG (WorkingSet.java:304) - Ruleset: MailRule1
14:28:08,025 DEBUG (WorkingSet.java:472) -
//Import the IndexServer API classes.
importPackage(Packages.de.elo.ix.client);
importPackage(Packages.java.lang);
importPackage(Packages.java.sql);
importPackage(Packages.sun.jdbc.odbc);
importPackage(Packages.java.io);
var NAME;
var ARCDATE;
var DOCDATE;
var OBJCOLOR;
var OBJDESC;
var OBJTYPE;
var ARCHIVINGMODE;
var ACL;
var EM_PARENT_ID;
var EM_PARENT_ACL;
var EM_NEW_DESTINATION = new Array();
var EM_FIND_RESULT = null;
…

Achten Sie darauf, dass diese Ausgabe bei jedem Neustart und auch beim Reload wiederholt wird. In einer Reportdatei können sich also mehrere Auflistungen befinden. Aktuell ist immer die letzte Liste im Report.

# Logische- oder Laufzeitfehler

Etwas schwieriger wird der Fall bei Laufzeitfehlern. Hier gibt es nur die Möglichkeit mittels Log-Ausgaben die Fehlerstelle einzugrenzen. So eine Log-Ausgabe ist zwar deutlich weniger komfortabel als ein interaktiver Debugger, hat aber bei der Massenverarbeitung durchaus auch Vorteile. Der Java Logger des ELOas ist auf der JavaScript-Seite unter dem Namen log erreichbar. Deshalb kann der JavaScript-Code dort auch mit log.debug() Einträge vornehmen.

var cmd = "SELECT * FROM objekte where objid = 22";
var res = getLine(1,cmd);
log.debug(res.objshort);
log.debug(res.objidate);
log.debug(res.objguid);

Die Log-Ausgaben des JavaScript-Codes erkennt man an dem fehlenden Klassennamen und der fehlenden Zeilennummer im Report (?:?).

15:38:57,643 DEBUG (?:?) - Now init JDBC driver
15:38:57,659 DEBUG (?:?) - Get Connection
15:38:57,659 DEBUG (?:?) - Init done.
15:38:57,659 DEBUG (?:?) - createStatement
15:38:57,659 DEBUG (?:?) - executeQuery
15:38:57,659 DEBUG (?:?) - read result
15:38:57,659 DEBUG (?:?) - getLine done.
15:38:57,659 DEBUG (?:?) - Suchen geändert.
15:38:57,659 DEBUG (?:?) - 56666880
Zuletzt aktualisiert: 31. Juli 2023 um 08:32