[Python-de] Speicherlecks finden

Martin v. Loewis martin at loewis.home.cs.tu-berlin.de
Fri Oct 5 21:14:44 EDT 2001


> Kennt jemand Tools für Python vergleichbar zu insure/purify/etc. für C, 
> die verlorene Referenzen finden?

Falls alle beteiligten Objekte am GC teilnehmen, kann man
gc.DEBUG_SAVEALL setzen. Damit findet man alle Objekte in erkannten
Zyklen, und kann beispielsweise selber Zyklen aufbrechen, anstatt sie
vom GC finden zu lassen.

Wenn man einen Verzählungsfehler im C-Code vermutet, kann man Python
mit --with-pydebug übersetzen. Dann werden alle Objekte in einer
globalen Liste geführt, die bei Pythonende ausgegeben wird. Damit
findet man die leckenden Objekte, weiss aber nicht, wo sie herkommen.
Alle Extensions müssen neu übersetzt werden, da sich das
PyObject-Layout ändert.

Schliesslich kann man ganz einfach Purify anwenden. Es funktioniert
wie immer, und man sieht auch ungefähr, wo die Objekte herkommen.

Es gibt sogar ein puremodule, das habe ich aber noch nie ausprobiert.

Ciao,
Martin




More information about the Python-de mailing list