[Python-de] Debugging bei Speicherproblem?

Ulf Rompe python-de at rompe.org
Mi Jul 21 14:22:27 CEST 2010


Am 19.07.2010 23:41, schrieb Marc Rödder:
> Jetzt habe ich allerdings das Problem, dass dieses Skript bei
> Überschreiten einer gewissen Menge an Bildern, die im Speicher
> vorgehalten werden, einfach stehen bleibt. Es gibt also keine
> Fehlermeldung und keinen wirklichen Absturz. Sieht jemand eine Chance
> oder hat jemand einen Tipp, wie man das vernünftig debuggen könnte?

Auf welchem Betriebssystem läuft das denn? Verbraucht der Python-Prozess 
noch Rechenzeit, wenn das Programm stehen bleibt? Falls nicht, würde ich 
mal den Interpreter selbst unter die Lupe nehmen. Unter Linux kann man 
dafür beispielsweise die Prozess-ID mittels "ps aux" ermitteln und dann 
mittels "strace -f -p <Prozess-ID>" schauen, was der Interpreter gerade 
zu tun versucht. Den Prozess kann man jederzeit an strace attachen, aber 
man sollte bedenken, dass strace die Ausführung deutlich verlangsamt und 
dass es extrem viel ausgeben kann. Letzteres kann Dir leicht die Platte 
vollschreiben, wenn Du mit "-o" die Ausgabe in eine Datei umleitest.

Ein anderer Ansatz wäre, das Script mittels pdb zu starten. Dort würde 
ich zunächst einmal "continue" sagen und, wenn es denn wieder 
eingefroren ist, beherzt Ctrl-C drücken. Dann siehst Du schon einmal, an 
welcher Stelle im Code sich der Interpreter gerade befand, und Du kannst 
aktuell besetzte Variablen inspizieren. Damit sollte man dann schon 
weiter kommen, und sei es nur so weit, dass man eine Ahnung bekommt, an 
welchen Stellen man noch mehr Debug-Ausschriebe in das Script stecken 
sollte, um den Fehler weiter einzugrenzen.

[x] ulf

-- 
Rome did not create a great empire by having meetings,
they did it by killing all those who opposed them.




Mehr Informationen über die Mailingliste python-de