2012-04-24 12 views
8

में कोड डिबगिंग मुझे पायथन दुभाषिया में परीक्षण कार्यों को पसंद है। क्या पायथन दुभाषिया में एक फ़ंक्शन डीबग करना संभव है जब मैं रिटर्न वैल्यू और साइड इफेक्ट से अधिक देखना चाहता हूं?पाइथन दुभाषिया

यदि हां, तो क्या आप मूल डीबगर ऑपरेशंस दिखा सकते हैं (तर्क के साथ फ़ंक्शन लॉन्च करना, ब्रेकपॉइंट सेट करना, अगला चरण, चरण में, चर देखें)? यदि नहीं, तो आप किसी फ़ंक्शन को किसी अन्य तरीके से कैसे डिबग करेंगे?

बिंदु यह है कि, मैं केवल एक विशेष कार्य को डीबग करना चाहता हूं जो तर्कों के साथ प्रदान की जाएगी। मैं पूरे मॉड्यूल कोड डीबग नहीं करना चाहता हूं।

सलाह

+1

क्या आपने Google के साथ 'pdb' खोजा है? – hochl

+0

@ होचल मैंने सोचा कि पीडीबी एक एप्लीकेशन है (सी भाषा के लिए जीडीबी की तरह कुछ) और मुझे नहीं पता था कि यह एक मॉड्यूल है। यदि मैं विशेष फ़ंक्शन डीबग करने में सक्षम हूं, तो मैं इसे आज़माउंगा। – xralf

+0

यह है - 'पीडीबी' जाने का तरीका है, [मॉड्यूल विवरण] (http://docs.python.org/library/pdb.html) पढ़ें। – hochl

उत्तर

6

आप इस का उपयोग कर सकते हैं आप विशेष समारोह डिबग करने के लिए चाहते हैं। pdb.set_trace() को तोड़ने के लिए आपके फ़ंक्शन में जोड़ा जाना चाहिए। pdb पर

अधिक जानकारी यहाँ देखा जा सकता है - http://docs.python.org/library/pdb.html

+1

क्या मुझे लाइन संख्याएं मिल सकती हैं जहां मुझे दुभाषिया में ब्रेक पॉइंट सेट करना चाहिए या मुझे इसे संपादक से ढूंढना चाहिए? – xralf

+0

ठीक है, अब मैं समझता हूं। मुझे अपने स्रोत कोड में 'pdb.set_trace()' रखना चाहिए। अच्छा काम, धन्यवाद। मैं इसे पहले समझ में नहीं आया है। – xralf

6

पीडीबी मॉड्यूल देखें। कोड में डालें:

import pdb 
pdb.set_trace() 

... ब्रेकपॉइंट बनाता है। कमांड लाइन से अधिक

>>> import pdb 
>>> import yourmodule 
>>> pdb.run('yourmodule.foo()') 

-

1

कोड करने के लिए डिबग की जरूरत नहीं है pdb.set_trace() शामिल करने के लिए संशोधित किया जा करने के लिए।

def some_func(text): 
    print 'Given text is {}'.format(repr(text)) 
    for index,char in enumerate(text): 
     print ' '*index, char 

एक दुभाषिया सत्र some_func का उपयोग कर डिबग करने के लिए: निम्न कोड के साथ test_script.py दिया

>>> import pdb 
>>> pdb.set_trace(); <code-to-debug> 

उदाहरण के लिए,: यह कॉल सिर्फ कोड करने के लिए डिबग से पहले दुभाषिया में सीधे बनाया जा सकता है डिबगर कदम दर में (s), अगले (n) और जारी रखने के लिए (c) आदेश दिखाई देगा:

>>> import pdb 
>>> import test_script 
>>> pdb.set_trace(); test_script.some_func('hello') 
--Call-- 
> c:\src\test_script.py(1)some_func() 
-> def some_func(text): 
(Pdb) s 
> c:\src\test_script.py(2)some_func() 
-> print 'Given text is {}'.format(repr(text)) 
(Pdb) n 
Given text is 'hello' 
> c:\src\test_script.py(3)some_func() 
-> for index,char in enumerate(text): 
(Pdb) c 
h 
    e 
    l 
    l 
    o 
>>> 
डिबगर का उपयोग करते समय http://docs.python.org/library/pdb.html

साथ ही,, help आदेश आदेशों का एक अच्छा सूची प्रदान करता है और help <command> दिया आदेश के लिए विशिष्ट मदद देता है:

कैसे डिबगर का उपयोग करने के बारे में अधिक जानकारी के लिए pdb मॉड्यूल के लिए दस्तावेज़ देख सकेंगे।

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