2012-03-13 8 views
15

यहाँ IPython में अपने कार्यों हैं:क्या डिबगिंग के साथ आईपीथॉन में कमांड चलाने के लिए संभव है?

> import my_module 
> import ipdb 

अब, मेरी मॉड्यूल किसी भी निष्पादन योग्य कोड का अभाव है, यह केवल कक्षाओं की घोषणा की।

> g = my_module.Graph() 
> f = open('test.osm') 
> g.from_osm(f) 

मैं Graph.from_osm अंदर एक ब्रेकपाइंट रखना चाहते हैं, संपादन फ़ाइल के बिना: तो मैं एक बयान बनाना चाहते हैं। मैं बाद की लाइनों को फ़ाइल में नहीं रखना चाहता और python -m ipdb ... करना चाहता हूं। मैं बस आदेश और डीबग चलाने के लिए चाहता हूँ।

क्या यह संभव है?

कहा: मैं देख रहा हूँ, यह

%run -d script_name 

या

> import pdb 
> pdb.run('statement') 

हो, लेकिन यह ipdb.run('statement') करने के लिए असंभव है, वहाँ ipdb में कोई .run है!

+1

ipdb 0.8 में '.run' है। – gerrit

+1

संभावित डुप्लिकेट [आईपीथॉन में एक फ़ंक्शन में कदम उठाना] (http://stackoverflow.com/questions/12646670/stepping-into-a-function-in-ipython) – LondonRob

उत्तर

2

Since IPython 3.2.2, %debug जादू, अगर कोई तर्क (एक पंक्ति या एक सेल) दिया जाता है, तो इसे डीबगर के तहत निष्पादित करता है।

  • यह कुछ भी निष्पादित करने से पहले टूट जाता है, जिससे आपको ब्रेकपॉइंट्स सेट करने का मौका मिलता है और/या कोड के माध्यम से कदम उठाने का मौका मिलता है।
  • और यह --breakpoint तर्क स्वीकार करता है जो एक और ब्रेकपॉइंट सेट करता है (कमांड के हिस्से के रूप में, इसे कमांड इतिहास में सहेजा जाएगा, आपको बार-बार आमंत्रण के लिए टाइपिंग सहेजता है)।
2

शायद 'जादू' IPython में % डिबग और/या % pdb आदेश आप कर सकते हैं।

+5

नहीं, यह वही नहीं है जो मैं देखता हूं। वे दोनों एक अपवाद पर रुकते हैं। मैं बस कदम से प्रोग्राम निष्पादन कदम देखना चाहता हूँ। –

+0

'IPython 5' के रूप में, 'डीबग' कुछ भी निष्पादित करने से पहले बंद हो जाता है, जिससे आप ब्रेकपॉइंट्स सेट कर सकते हैं और/या कोड के माध्यम से कदम उठाने लग सकते हैं। –