2013-01-03 8 views

Odpowiedz

10

znalazłem odpowiedź. Jest to dość proste w rzeczywistości, istnieje polecenie o nazwie ignore powiedzmy chcesz przerwać na przerwania w linii 9 po 1000 Odsłon:

b 9 

wyjściowa: Breakpoint 2 at ...

ignore 1 1000 

wyjściowa: Will ignore next 1000 crossings of breakpoint 1.

c 
13

warunkowe Wartości graniczne można ustawić na 2 sposoby -

PIERWSZA: określić stan, gdy punkt przerwania jest ustawiony za pomocą 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) 

drugie: warunek może być również stosowana do istniejącego punkt przerwania przy użyciu polecenia condition. Argumentami są identyfikator punktu przerwania i wyrażenie.

$ 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: pisałem prostszy kod

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

debugowanie na terminalu -

$ 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

jest tam, zamiast "j", zmienna, która przechowuje liczbę trafień dla tego punktu przerwania? – zenpoy

+0

'j' jest aktualną iteracją pętli. co masz na myśli "liczba trafień dla tego punktu przerwania"? –

+0

Dzięki, znalazłem odpowiedź .. – zenpoy

Powiązane problemy