2013-01-03 12 views

risposta

10

ho trovato la risposta. E 'abbastanza facile in realtà, c'è un comando chiamato ignore diciamo che si vuole rompere al punto di interruzione in linea 9 dopo 1000 colpi:

b 9 

uscita: Breakpoint 2 at ...

ignore 1 1000 

uscita: Will ignore next 1000 crossings of breakpoint 1.

c 
13

condizionale punti di interruzione può essere impostato in 2 modi -

PRIMO: specificare la condizione in cui il punto di interruzione è impostato utilizzando break

python -m pdb pdb_break.py 
> .../pdb_break.py(7)<module>() 
-> def calc(i, n): 
(Pdb) break 9, j>0 
Breakpoint 1 at .../pdb_break.py:9 

(Pdb) break 
Num Type   Disp Enb Where 
1 breakpoint keep yes at .../pdb_break.py:9 
     stop only if j>0 

(Pdb) continue 
i = 0 
j = 0 
i = 1 
> .../pdb_break.py(9)calc() 
-> print 'j =', j 

(Pdb) 

SECONDO: condizione può anche essere applicato a una esistente punto di interruzione utilizzando il comando condition. Gli argomenti sono l'ID del punto di interruzione e l'espressione.

$ python -m pdb pdb_break.py 
> .../pdb_break.py(7)<module>() 
-> def calc(i, n): 
(Pdb) break 9 
Breakpoint 1 at .../pdb_break.py:9 

(Pdb) break 
Num Type   Disp Enb Where 
1 breakpoint keep yes at .../pdb_break.py:9 

(Pdb) condition 1 j>0 

(Pdb) break 
Num Type   Disp Enb Where 
1 breakpoint keep yes at .../pdb_break.py:9 
     stop only if j>0 

(Pdb) 

source

UPDATE: Ho scritto un codice più semplice

import pdb; pdb.set_trace() 
for i in range(100): 
    print i 

debug sul terminale -

$ python 1.py 
> /code/python/1.py(3)<module>() 
-> for i in range(100): 
(Pdb) l 
    1  
    2  import pdb; pdb.set_trace() 
    3 -> for i in range(100): 
    4   print i 
[EOF] 
(Pdb) break 4, i==3 
Breakpoint 1 at /code/python/1.py:4 
(Pdb) break 
Num Type   Disp Enb Where 
1 breakpoint keep yes at /code/python/1.py:4 
    stop only if i==3 
(Pdb) c 
0 
1 
2 
> /Users/srikar/code/python/1.py(4)<module>() 
-> print i 
(Pdb) p i 
3 
+0

c'è, invece di 'j', una variabile che contiene il numero di risultati per questo punto di interruzione? – zenpoy

+0

'j' è l'iterazione del loop corrente. cosa intendi con "hit count per questo breakpoint"? –

+0

Grazie, ho trovato la risposta .. – zenpoy

Problemi correlati