Der Debugger hat eine Zeitüberschreitung bei "Daten erfassen ..."

8

Ich debugge ein Python ( 3.5 ) Programm mit Pycharm ( PyCharm Community Edition 2016.2.2 ; Build #PC-162.1812.1, built on August 16, 2016 ; JRE: 1.8.0_76-release-b216 x86 ; JVM: OpenJDK Server VM by JetBrains s.r.o ) unter Windows 10.

Das Problem: Wenn das Debugger-Fenster an einigen Haltepunkten angehalten wird, bleibt es bei "Daten sammeln" stecken, was eventuell zu einem Zeitlimit führt. (mit Bildvariablen können nicht angezeigt werden <) / p>

Die anzuzeigenden Daten sind weder besonders noch besonders groß. Es ist irgendwie für Pycharm verfügbar, da ein bedingter Haltepunkt für einige Werte der besagten Daten gut funktioniert (das Programm bricht) - es sieht so aus, als ob der Prozess, um es nur zur Anzeige zu sammeln (im Gegensatz zu operativen Zwecken), fehlschlägt.

Wenn ich in eine Funktion um den Ort gehe, an dem ich meinen Haltepunkt habe, werden seine Daten korrekt angezeigt. Wenn ich den Stapel hochgehe (zu der aufrufenden Funktion, der, von der ich heruntergekommen bin und wo ich ursprünglich den Haltepunkt haben wollte) - stehe ich wieder bei dem "Sammeln von Daten" Timeout fest.

Seit mindestens 2005 wurden zahlreiche Probleme mit demselben Punkt angesprochen. Einige wurden behoben, andere nicht. Die Updates waren normalerweise Updates auf die neueste Version (die ich habe).

Gibt es eine allgemeine Richtung, in die ich gehen kann, um diese Problemfamilie zu beheben oder zu umgehen?

EDIT: Ein Jahr später ist das Problem immer noch da und es gibt immer noch keine Reaktion von den Entwicklern / Support nachdem der Bug ausgelöst wurde.

    
WoJ 07.09.2016, 13:46
quelle

1 Antwort

1

Ich denke, dass dies durch einige Klassen verursacht wird, die eine Standardmethode __str __ () haben, die zu ausführlich ist. Pycharm ruft diese Methode auf, um die lokalen Variablen anzuzeigen, wenn ein Haltepunkt erreicht wird, und sie bleibt beim Laden der Zeichenfolge hängen. Ein Trick, den ich benutze, um dies zu überwinden, besteht darin, die Klasse, die den Fehler verursacht, manuell zu bearbeiten und die __str __ () -Methode durch etwas weniger Ausführliches zu ersetzen.

Als Beispiel passiert es für die pytorch _TensorBase Klasse (und alle Tensorklassen, die es erweitern) und kann durch Bearbeiten der pytorch Quelle fackel / tensor.py gelöst werden, indem die __str __ () Methode wie folgt geändert wird:

%Vor%

Weit davon entfernt, optimal, aber kommt in der Hand.

    
Manel B 13.12.2017 20:12
quelle

Tags und Links