2012-04-25 18 views
28

Tengo el siguiente código Python:¿Cómo llamo a la lista de Python durante la depuración?

values = set([1, 2, 3, 4, 5]) 
import pdb 
pdb.set_trace() 

que ejecutar el script y estoy en la cáscara de depuración:

(pdb) list(values) 
*** Error in argument: '(values)' 
(Pdb) 

¿Cómo puedo llamar list(values) en el depurador sin invocar propio comando del depurador list ?

Respuesta

33

Sólo print que:

(Pdb) print list(values) 
+2

'p 'y' pp' es más corto que escribir =) – okm

+3

p: de impresión, pp: prettyprint –

+0

omg gracias! Estaba criticando esto, noté que '' 'list''' se comportó de manera diferente en pdb pero no hizo clic en mi cabeza. –

0

Thierry,

Desde esta estructura de datos ya es una secuencia que es redundante especificar como una lista. Entonces esto funcionará bien.

(Pdb) print values 

o

(Pbd) print(values) 

si está utilizando python3


Opcionalmente para obtener una lista agradable con saltos de línea

(Pdb) for x in values: print x 

o

(Pdb) for x in values: print(x) 

para python3

+0

Pero no es una 'lista', es un' conjunto'. – jamylak

+0

corregido que notó mi error mientras escribía – dc5553

+0

Un 'conjunto' no es una' matriz' ... usted todavía está pensando en una 'lista' – jamylak

20

Utilice el signo de exclamación! para escapar de comandos del depurador:

(Pdb) values = set([1, 2, 3, 4, 5]) 
(Pdb) list(values) 
*** Error in argument: '(values)' 
(Pdb) !list(values) 
[1, 2, 3, 4, 5] 
Cuestiones relacionadas