2013-01-03 8 views
14

ग्रहण (और कई अन्य आईडीई के साथ) में हिट की एक निश्चित संख्या के बाद ही ब्रेकपॉइंट चालू करने का विकल्प होता है। पायथन के pdb में ब्रेकपॉइंट्स के लिए हिट गिनती है और condition कमांड है। मैं उन्हें कैसे जोड़ूं?पायथन: पीडीबी में एन हिट मायने रखता है केवल ब्रेकपॉइंट सक्षम करना संभव है?

उत्तर

10

मैं इस सवाल का जवाब मिल गया। यह वास्तव में बहुत आसान है, वहाँ नामक आदेश ignore मान लीजिए कि आप 1000 हिट के बाद लाइन 9 में ब्रेकप्वाइंट पर तोड़ने के लिए चाहते हैं क्या है:

b 9 

आउटपुट: Breakpoint 2 at ...

ignore 1 1000 

आउटपुट: Will ignore next 1000 crossings of breakpoint 1.

c 
13

सशर्त ब्रेकप्वाइंट 2 तरीकों से सेट किया जा सकता -

सबसे पहले: किसी मौजूदा करने के लिए लागू किया जा सकता हालत: जब ब्रेकप्वाइंट 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) 

दूसरा का उपयोग कर सेट कर दिया जाता शर्त निर्दिष्ट condition कमांड का उपयोग करके ब्रेकपॉइंट। तर्क ब्रेकपॉइंट आईडी और अभिव्यक्ति हैं।

$ 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

अद्यतन: मैं टर्मिनल पर

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

डिबगिंग एक सरल कोड लिखा था -

$ 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

वहां 'j' के बजाय, एक चर है जो इस ब्रेकपॉइंट के लिए हिट गिनती रखता है? – zenpoy

+0

'j' वर्तमान लूप पुनरावृत्ति है। आपका मतलब क्या है "इस ब्रेकपॉइंट के लिए हिट गिनती"? –

+0

धन्यवाद, मुझे जवाब मिला .. – zenpoy

संबंधित मुद्दे