2013-03-01 2 views
20

Was bedeutet das?Python Debugger sagt mir Wert von Numpy-Array ist "*** Neueste Rahmen"

Meine Funktion ruft zwei Nummernfelder aus einer Python/C-Bibliothek ab. Nach diesem Funktionsaufruf schalte ich den Debugger ein, um einen Fehler zu finden, also füge ich die Zeile hinzu, um die zwei numpigen Arrays zu betrachten.

import pdb; pdb.set_trace() 

Aber für die Werte eines der arrayspdb gibt nur die Meldung *** Newest frame

PDB Ausgabe:

(Pdb) type(d) 
<type 'numpy.ndarray'> 
(Pdb) type(f) 
<type 'numpy.ndarray'> 
(Pdb) f.shape 
(3, 3, 17856) 
(Pdb) d[0].shape 
*** Newest frame 
(Pdb) d[0] 
*** Newest frame 

Antwort

29

Der Befehl d ist die command for the debugger verwendet, um den Stapel zu einem nach unten gehen 'neuerer Rahmen'. Es scheint, dass das Parsing mit dieser Disambiguität nicht umgehen kann.

Versuchen Sie, die Variable d umzubenennen.

+4

oder tun 'p d [0] .shape' oder' print d [0] .shape' –

+3

Oder verwenden Sie ein Ausrufezeichen, wenn Sie Python-Code im Debugger verwenden möchten: '! D [0]'. Normalerweise wird alles, was Sie in der Debugger-Befehlszeile eingeben, als * Debugger * -Befehl betrachtet, nicht als Python (aber der Debugger ist ziemlich flexibel). Siehe am Ende der [Dokumentation] (http://docs.python.org/2/library/pdb.html). – Evert