Jak zjistit, proč spadl skript v Pythonu?

Svoby

Jak zjistit, proč spadl skript v Pythonu?
« kdy: 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?).


Jakub L.

Re:Jak zjistit, proč spadl skript v Pythonu?
« Odpověď #1 kdy: 29. 12. 2014, 22:14:27 »
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...


Logik

  • *****
  • 1 047
    • Zobrazit profil
    • E-mail
Re:Jak zjistit, proč spadl skript v Pythonu?
« Odpověď #2 kdy: 30. 12. 2014, 15:12:42 »
Použij něco z tohodle:
http://stackoverflow.com/questions/242485/starting-python-debugger-automatically-on-error
jestli skončí na exception, tak zjistíš proč




Jenda

Re:Jak zjistit, proč spadl skript v Pythonu?
« Odpověď #3 kdy: 30. 12. 2014, 18:18:32 »
Když pythoní skript spadne, vypíše to stacktrace, kde je vidět jaké funkce se volaly a kde to spadlo.

Re:Jak zjistit, proč spadl skript v Pythonu?
« Odpověď #4 kdy: 30. 12. 2014, 18:40:02 »
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.


alfonz

Re:Jak zjistit, proč spadl skript v Pythonu?
« Odpověď #5 kdy: 30. 12. 2014, 19:59:12 »
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

e3k

Re:Jak zjistit, proč spadl skript v Pythonu?
« Odpověď #6 kdy: 30. 12. 2014, 20:43:19 »
Tak jak povedal Mirek:

https://docs.python.org/2/howto/logging.html#logging-basic-tutorial

Kód: [Vybrat]
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')