PDB: Wie untersucht man lokale Variablen von Funktionen in verschachtelten Stack-Frames?

8

Kontext:

Ich führe einen Python-Code durch PDB (Python-Debugger). Wenn ich einen Haltepunkt setze und anschließend triff, kann ich die lokalen Variablen mit Hilfe von:

überprüfen %Vor%

Dies gibt ein nettes dict des Namens aus, Wertepaare der lokalen Variablen in dem aktuellen Bereich, in dem ich pausiert habe. Perfekt!

Ich kann auch einen Stack-Trace mit dem Befehl PDB where sehen, der in etwa so aussieht:

%Vor%

In dieser Beispielausgabe wurde ich in der Funktion quicksort() angehalten, die von der Funktion run() aufgerufen wurde.

So weit, so gut.

Frage:

Wenn ich die lokalen Variablen quicksort() mit einem Aufruf von locals() untersuchen kann, wie kann ich dann die lokalen Variablen der Funktion run() inspizieren?

Mit anderen Worten, wie kann ich die lokalen Variablen einer Funktion untersuchen, die in der Aufrufliste verschachtelt ist?

Wichtige Klarstellung : Ich NICHT möchte continue oder step in run() , um seine lokalen Variablen zu überprüfen. Ich möchte (aus meiner aktuellen, pausierten Perspektive) die lokalen Variablen im aktuell im Aufruf-Stack verschachtelten run() Stack-Frame untersuchen.

    
Todd Ditchendorf 06.05.2014, 04:10
quelle

1 Antwort

9

(i)pdb bieten die Befehle up und down , so dass Sie über den Call-Stack reisen können. Auf diese Weise können Sie höhere Ebenen Ihres Aufrufs aufrufen und lokale Variablen dort prüfen.

Besuchen Sie noch einmal ein Debugging-Tutorial, das wird wahrscheinlich beim zweiten Versuch klar werden.

    
Jan Vlcinsky 06.05.2014, 07:32
quelle

Tags und Links