ग्रहण (और कई अन्य आईडीई के साथ) में हिट की एक निश्चित संख्या के बाद ही ब्रेकपॉइंट चालू करने का विकल्प होता है। पायथन के pdb
में ब्रेकपॉइंट्स के लिए हिट गिनती है और condition
कमांड है। मैं उन्हें कैसे जोड़ूं?पायथन: पीडीबी में एन हिट मायने रखता है केवल ब्रेकपॉइंट सक्षम करना संभव है?
14
A
उत्तर
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)
अद्यतन: मैं टर्मिनल पर
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
वहां 'j' के बजाय, एक चर है जो इस ब्रेकपॉइंट के लिए हिट गिनती रखता है? – zenpoy
'j' वर्तमान लूप पुनरावृत्ति है। आपका मतलब क्या है "इस ब्रेकपॉइंट के लिए हिट गिनती"? –
धन्यवाद, मुझे जवाब मिला .. – zenpoy