Python-Speicher-Debugging mit GDB



Answers

Wenn Sie Mac oder Sun Box herumkicken, könnten Sie dtrace und eine Version von Python verwenden, die mit dtrace kompiliert wurde, um herauszufinden, was die Anwendung zu der Zeit gemacht hat. Hinweis: In 10.5 ist Python mit dtrace vorkompiliert, was wirklich nett und praktisch ist.

Wenn Ihnen das nicht zur Verfügung steht, können Sie gc importieren und das Debugging aktivieren, das Sie dann in eine Protokolldatei ablegen können.

Um Ihre Frage zum Debuggen mit GDB gezielt zu beantworten, können Sie im Python-Wiki " Debugging mit GDB " lesen.

Question

Wir haben eine Linux-Anwendung, die die Python-Bindungen von OpenSSL nutzt und ich vermute, dass es zufällige Abstürze verursacht. Gelegentlich sehen wir es mit der Nachricht abstürzen:

Python Fatal Error: GC-Objekt bereits verfolgt

Dies scheint entweder ein Programmierfehler seitens der Bibliothek oder ein Symptom einer Speicherbeschädigung zu sein. Gibt es eine Möglichkeit, die letzte Zeile des ausgeführten Python-Quellcodes zu kennen, wenn eine Kerndatei angegeben wurde? Oder wenn es in GDB angehängt ist? Ich merke, dass es wahrscheinlich alles kompilierter Bytecode ist, aber ich hoffe, dass jemand da draußen sich damit befasst hat. Derzeit läuft es mit dem Trace-Modul aktiv und wir hoffen, dass es wieder passieren wird, aber es könnte eine Weile dauern.




Zusätzlich zu allen oben genannten Funktionen kann ein Adhoc-Tracer über das Trace-Modul schnell implementiert werden .




Links