Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Svoby 29. 12. 2014, 21:55:52
-
Zdravim. Potreboval bych zjistit proc se skript v pythonu ukonci, jeslti je na to nejaky log nebo tak neco. Pripadne jak takovy log vytvorit. Skript by mel bezet do nekonecna, ale obcas proste spadne a ja netusim proc,vetsinou bezi radove desitky hodin nez umre. Jede to na raspbianu (debian pro raspberryPi) Skript se spusti automaticky se startem systemu, takze neni spousetny z terminalu. Ve vypisu ps ax se ukaze takhle : 1779 ? S 0:06 python dallas.py Navic jsem ten skrip nepsal ja, takze netusim jak jsou tam osetrene chyby. Diky moc a berte me s rezervou ucim se stim. Diky
Ps: kdyz skript spustim z terminalu zadnou chybu to nehodilo a presto se ukoncil (nebo ho neco ukoncilo?).
-
Začal bych s exit kódem toho skriptu: http://tldp.org/LDP/abs/html/exit-status.html
Podíval bych se do Syslogu
Pak bych na ten skript hodil strace: https://stackoverflow.com/questions/174942/how-should-strace-be-used
Pokud jde o tohle: https://github.com/maproulx/RPILAMPServer/tree/master/PrivateEyePi/Dallas tak ten skript neloguje vůbec nic. Pokud to spadne na exception, tak by ji to mělo vypsat na stderr. Upravil bych ten spouštěcí skript, aby vše (stdout i stderr) zapisoval do nějakého souboru...
-
Použij něco z tohodle:
http://stackoverflow.com/questions/242485/starting-python-debugger-automatically-on-error
jestli skončí na exception, tak zjistíš proč
-
Když pythoní skript spadne, vypíše to stacktrace, kde je vidět jaké funkce se volaly a kde to spadlo.
-
Cesta nejmenšího odporu je dát si na všechny místa, kde to může skončit, nějaký ladící výpis. Pokud python neovládáš, hoď ten skript někam na pastebin, třeba ti nějaký ochotný dědeček hříbeček pomůže :)
Co se týče toho startování při startu systému, já to dělám tak, že věci, kde chci vidět výpisy, spouštím pod tmuxem (klidně se startem systému). Jak to přesně udělat, to už záleží na distribuci.
-
No myslím, že ještě jednodušší jak zjistit proč padá, je spustit ho při startu ale přesměrovat log do souboru např přes ...
asi nějak takhle
python skript.py > /tmp/test.log 2>&1
to by mělo zapsat vše do daného souboru a tedy i pravděpodobně zápis Traceback
-
Tak jak povedal Mirek:
https://docs.python.org/2/howto/logging.html#logging-basic-tutorial
import logging
logging.basicConfig(filename='example.log',level=logging.DEBUG)
...
logging.debug('Zacal som robit nieco')
...
logging.debug('nieco som aj suspesne dokoncil')
...
logging.debug('sem by som sa vobec nemal dostat')