2010-04-24 12 views
7

में पाइथन डीबगिंग मैं अपने कुछ काम के लिए ग्रहण + पायडेव जोड़ी का प्रयास करता हूं। (ग्रहण v3.5.0 + PyDev v1.5.6) मुझे अपने सभी चर को PyDev कंसोल (PyDev कंसोल -> वर्तमान सक्रिय संपादक विकल्प के लिए कंसोल के माध्यम से) का खुलासा करने का कोई तरीका नहीं मिला। मैं इस मुद्दे का वर्णन करने के लिए एक सरल कोड का उपयोग करता हूं । जब मैं कोड-दर-चरण कोड के माध्यम से जाता हूं तो मैं कंसोल से अपने "एक्स" चर का उपयोग नहीं कर सकता। इसे वैरिएबल टैब पर देखा जाता है, लेकिन यह वास्तव में वही नहीं है जो मैं चाहता हूं।ग्रहण + पायडेव

कोई भी मदद की सराहना की है।

बेहतर विवरण के लिए मेरे स्क्रीनशॉट देखें:

alt text http://img541.imageshack.us/img541/4514/eclipsedebug.png

संपादित करें:

की तरह एक साधारण समारोह जोड़ने मान लें:

def myfunc(x): 
    return x**x 

जब मैं समारोह में जोड़ा साथ डिबग कोड मैं आसानी से कंसोल से myfunc का उपयोग कर सकते हैं। (प्रकार myfunc और यह इस स्वचालित निष्पादन के बाद उपलब्ध हो जाएगा:।

>>> from part2.test import myfunc 
>>> myfunc 

फिर जब मैं myfunc करना (5) यह सिर्फ अजगर दुभाषिया में तरह कार्य करता है यह के लिए इसी तरह के फैशन में चर का उपयोग करने की तो उपयोगी होगा मेरे कोड को डीबग करना। मेरे पास बड़े सरणी हैं और मैं डीबग प्रक्रिया के दौरान विभिन्न परीक्षण और संचालन करता हूं। पसंद: मेरा एक्स प्राप्त करें और x.sum() करें, बाद में x [:: 10] करें, या अन्य सरणी के साथ संचालित करें ट्रांसफर परिणाम देखें , खोजपूर्ण डिबगिंग की इस तरह मुझे पसंद के लिए आदि प्रयोग ...

आशा वहाँ एक बेहतर समाधान हो जाएगा।

+0

मैं महीनों के लिए PyDev उपयोग कर रहे हैं और आप ऐसा कर सकते हैं पता नहीं था। (मुझे इसकी आवश्यकता नहीं है, मुझे लगता है)। मैं क्या सोच रहा था? –

+0

इन उत्तरों को देखें: - http://stackoverflow.com/questions/2045551/interactive-pydev-console-at-breakpoint - http://stackoverflow.com/questions/271625/interactive-console-using-pydev-in- ग्रहण –

+0

ठीक है, कुछ उपयोगी लग रहा है। फिर भी डीबग कंसोल पाइथन दुभाषिया का उपयोग करने की वास्तविक भावना नहीं देता है जहां आप आसानी से और आसानी से चर/सामग्री के साथ टैब-पूर्ण और बातचीत कर सकते हैं। –

उत्तर

2

पीडीबी का उपयोग करने के लिए, बैटरी शामिल डीबगर। मैंने इसे पीडीडीव के अंदर उपयोग नहीं किया है, इसलिए मुझे नहीं पता कि यह सब एक साथ कैसे फिट होगा। मेरा अनुमान है कि यह वही करेगा जो आप चाहते हैं। इसके उपयोग का एक उदाहरण:

import pdb 

def myfunc(x): 
    pdb.set_trace() 
    return x**x 

यह सही वापसी कथन निष्पादित करने से पहले टूट जाएगा, और यह आप पूर्ण pythonic बयानों का उपयोग करने के यह पता लगाने की क्या हो रहा है की अनुमति देता है। मैं इसे एक इंटरेक्टिव प्रिंट स्टेटमेंट की तरह उपयोग करता हूं: उस स्थान को सेट करना जहां मैं गोता लगाने की इच्छा रखता हूं, मूल्यों की जांच करता हूं और परिणाम ढूंढता हूं, और इसे देखने के लिए आगे बढ़ता हूं। शायद यह डिबगिंग का आलसी तरीका है, लेकिन कभी-कभी आपको कम आलसी निर्णय लेने से पहले अधिक जानकारी चाहिए :-)

जिस पृष्ठ का मैं आमतौर पर संदर्भ करता हूं वह Python Conquers The Universe पर है जो जानकारी के कुछ अन्य स्रोतों को भी जोड़ता है।

+1

सुझाव के लिए धन्यवाद। यह ग्रहण का उपयोग करने के उद्देश्य से थोड़ा हराता है :) कार्यों/विधियों की परिभाषा में कूदना ग्रहण में एक महान विशेषता है जो अधिक से अधिक मुझे आईपीथॉन + वीआईएम आधारित विकास चक्र का उपयोग करने के बजाय वहां रहने का आग्रह करता है। मुझे यकीन है कि कोई (Fabio शायद :)) ग्रहण में डीबगिंग करते समय स्थानीय/वैश्विक नेमस्पेस में अपने चर को इंजेक्ट करने का एक तरीका सुझाएगा। –

+0

ध्यान दें कि आप एक ब्रेकपॉइंट संदर्भ में PyDev में ऐसा ही कर सकते हैं (http://pydev.org/manual_adv_debug_console.html देखें)। –

+0

मैं नहीं कहूंगा कि यह उद्देश्य को हरा देता है ... लेकिन मैं आपका बिंदु देखता हूं। मैंने चेक किया और पीडीबी पीडीडीव में ठीक काम करता है, और यह वास्तव में स्रोत से लिंक होगा जब पीईडीवी लाइन-संख्या एनोटेशन देखता है। क्षमा करें PyDev सामान्य ग्रहण प्रयोज्यता के साथ नहीं पकड़ा गया है, हालांकि मुझे संदेह है कि यह अब से एक वर्ष आगे होगा। –

8

अद्यतन: करने के लिए ढेर में एक फ्रेम पर राइट क्लिक करें और चुनें PyDev> डीबग कंसोल अधिक एक डिबग सत्र के दौरान एक संदर्भ से जुड़े कार्यों के साथ इंटरैक्टिव सांत्वना के लिए

नवीनतम PyDev संस्करणों में, यह संभव है।


दुर्भाग्य से, वास्तविक इंटरैक्टिव सांत्वना है, जो कोड के साथ खेल का पसंदीदा तरीका होगा (कोड-पूरा होने के साथ, आदि - http://pydev.org/manual_adv_interactive_console.html) अभी एक डिबग सत्र से कोई संबंध नहीं है (यह योजना बनाई है, लेकिन अभी भी है कार्यान्वित नहीं)।

फिर भी, 'सरल' कंसोल उपलब्ध होने के साथ, आप अभी भी ब्रेकपॉइंट स्कोप में उपलब्ध चर के साथ इंटरैक्टिव रूप से निरीक्षण और खेलने में सक्षम हैं: http://pydev.org/manual_adv_debug_console.html (जो पीडीबी के साथ आपके जैसा होगा - यह सिर्फ एक है ब्रेकपॉइंट के बाद उपलब्ध कंसोल में टाइपिंग कोड का मामला मारा जाता है)।

चीयर्स,

फैबियो