Jak debugować błąd pamięci Pythona?

Edycja: Naprawdę doceniam pomoc w znalezieniu błędu - ale ponieważ znalezienie / odtworzenie może okazać się trudne, każda ogólna pomoc w debugowaniu byłaby bardzo doceniona! Pomóż mi pomóc! =)

Edytuj 2: zawężenie, komentowanie kodu.

Edytuj 3: Wygląda na to, że lxml może nie być winowajcą, dzięki! Pełny skrypt totutaj. Muszę to przejrzeć, szukając referencji. Jak oni wyglądają?

Edytuj 4: Właściwie skrypty zatrzymują się (w 100%) w tym parse_og część tego. Więc edycja 3 jest fałszywa - musi to być w jakiś sposób lxml.

Edytuj 5 MAJOR EDIT: Jak sugerują David Robinson i TankorSmash poniżej, znalazłem typdata treści, które będą wysyłanelxml.etree.HTML( data ) w dzikiej pętli. (Beztrosko zlekceważyłem to, ale odkryłem, że moje grzechy zostały odkupione, ponieważ zapłaciłem cenę w wysokości dodatkowych dwóch dni debugowania!;)Działający awaryjny skrypt jest tutaj. (Otworzył również nowe pytanie.)

Edytuj 6: Okazuje się, że jest to błąd z wersją lxml 2.7.8 i niższą (przynajmniej).Zaktualizowano do lxml 2.9.0, a błąd zniknął. Dziękuję również świetnym ludziomto kolejne pytanie.

Nie wiem, jak debugować ten dziwny problem, który mam. Poniższy kod działa dobrze przez około pięć minut, gdy pamięć RAM jest całkowicie zapełniona (od 200 MB do 1700 MB w okresie 100% - wtedy, gdy pamięć jest pełna, przechodzi w niebieski stan oczekiwania).

Jest to spowodowane poniższym kodem, a konkretnie pierwszymi dwoma liniami. Na pewno. Ale o co chodzi? Co mogłoby wyjaśnić to zachowanie?

def parse_og(self, data):
    """ lxml parsing to the bone! """
    try:
        tree = etree.HTML( data ) # << break occurs on this line >>
        m = tree.xpath("//meta[@property]")

        #for i in m:
        #   y = i.attrib['property']
        #   x = i.attrib['content']
        #   # self.rj[y] = x  # commented out in this example because code fails anyway


        tree = ''
        m = ''
        x = ''
        y = ''
        i = ''

        del tree
        del m
        del x
        del y
        del i

    except Exception:
        print 'lxml error: ', sys.exc_info()[1:3]
        print len(data)
        pass

questionAnswers(3)

yourAnswerToTheQuestion