[dss-developer] Script debugging

Dieter Stokar dieter.stokar at usility.ch
Sat Apr 30 10:32:28 CEST 2011


Besten Dank, Sebastian!

Jetzt ist klar geworden:

Ich verwendete 'tail -f dss.log', um den Log anzusehen.
Das Problem lag nun darin, dass der Output bei dieser Methode manchmal nicht unmittelbar erscheint (er wird wohl irgendwo gebuffert). 
Das verleitete mich zur Fehlinterpretation, dass Syntaxfehler gar nicht erscheinen würden. Und wenn man mal auf dem falschen Dampfer sitzt...

Damit ist einfaches Script-Debugging möglich. Soweit also alles klar.

Gruss,
Dieter


Am 29.04.2011 um 22:35 schrieb Sebastian Scholz:

> Hallo Dieter
> 
>>> Wenn sich doch mal ein Fehler eingeschlichen haben sollte, zeigt der dSS
>>> dies in seiner Logdatei an (/var/log/dss/dss.log auf dem dSS11).
>>> Dazu ein kurzes Beispiel. Ich habe die Datei
>>> /usr/share/dss/add-ons/myapp/myapp.js um die Zeile "var myEvent = new
>>> Event();" erweitert. Natürlich ist die Syntax falsch. In der Logdatei
>>> steht nach dem Ausführen des Scripts:
>>> 
>>> [2011-04-28 22:21:40][Error][System] JS: event_construct: (empty name)
>>> [2011-04-28 22:21:40][Error][System]
>>> EventInterpreterPluginJavascript::handleEvent:Caught event while
>>> running/parsing script '/usr/share/dss/add-ons/myapp/myapp.js'. Message:
>>> Error executing script
>>> 
>>> Das hilft beim Eingrenzen des Fehlers recht gut weiter.
>> 
>> Diese Einträge erscheinen bei mir nicht (habe den Fehler nachgestellt)
>> Muss ich vielleicht den Log-Level verändern? Wenn ja, wie?
> 
> Ich habe bei mir den Loglevel nicht geändert. Prinzipiell könnte man ihn
> aber auf dem dSS11 in der Datei /etc/runit/dss/run ändern. Dort wird für
> jedes Subsystem der Loglevel angegeben.
> 
> Bist du sicher, dass der fehlerhafte Code auch wirklich ausgeführt wird?
> Die komplette Datei sollte so aussehen:
> 
> var LOGFILE_NAME = "myapp.log";
> var l = new Logger(LOGFILE_NAME);
> 
> if (raisedEvent.name == "myapp.sayHello")
> {
>        l.logln('myapp started');
>        l.logln('The message is: ' + raisedEvent.parameter.message);
>        var myEvent = new Event();
> }
> 
> Natürlich muss man das Event myapp.sayHello noch auslösen (z.B. in der
> Weboberfläche auf die Schaltfläche "Event auslösen" klicken) bevor die
> Fehlermeldung im Log (in "/var/log/dss/dss.log") erscheint.
> 
> Gruss
> Sebastian
> _______________________________________________
> dss-developer mailing list
> dss-developer at forum.digitalstrom.org
> http://forum.digitalstrom.org/cgi-bin/mailman/listinfo/dss-developer



More information about the dss-developer mailing list