2010-12-24 8 views
9

डीबग करने के लिए विधियां मैं अपने सभी कोड संपादन आवश्यकताओं के लिए emacs का उपयोग करता हूं। आम तौर पर, मैं अपने टेस्ट रनर को चलाने के लिए एमएक्स संकलन का उपयोग करूंगा जो मैं कहूंगा कि कोड को ट्रैक रखने के लिए मुझे जो करना है, उसके बारे में 70% मुझे मिल जाएगा, हालांकि हाल ही में मैं सोच रहा हूं कि एमएक्स पीडीबी का उपयोग करना संभव कैसे हो सकता है ऐसे अवसर जहां ब्रेकपॉइंट मारना और चीजों का निरीक्षण करना अच्छा लगेगा।Emacs: पाइथन

मेरे गुगल में मुझे some things मिला है जो सुझाव देता है कि यह उपयोगी/संभव है। हालांकि मैं इसे इस तरह से काम करने में कामयाब नहीं रहा हूं कि मैं पूरी तरह से समझता हूं।

मैं अगर यह buildout + ऐप्लिकेशन इंजन का संयोजन है कि इसे और अधिक मुश्किल बना रही हो सकता है लेकिन जब मैं की तरह

M-x pdb 
Run pdb (like this): /Users/twillis/projects/hydrant/bin/python /Users/twillis/bin/pdb /Users/twillis/projects/hydrant/bin/devappserver /Users/twillis/projects/hydrant/parts/hydrant-app/ 

कुछ करने के लिए कोशिश कहाँ .../bin/अजगर दुभाषिया है पता नहीं है बिल्डआउट सभी अंडों के लिए पथ सेट के साथ बनाता है।

~/bin/pdb वर्तमान अजगर दुभाषिया

HellooKitty:hydrant twillis$ cat ~/bin/pdb 
#! /usr/bin/env python 

if __name__ == "__main__": 
    import sys 
    sys.version_info 
    import pdb 
    pdb.main() 
HellooKitty:hydrant twillis$ 
का उपयोग कर

.../bin/devappserver dev_appserver स्क्रिप्ट buildout नुस्खा gae परियोजना के लिए बनाता है pdb.main में कॉल करने के लिए एक सरल स्क्रिप्ट है और .../भागों/बम्बा-ऐप app.yaml

मैं पहली बार एक शीघ्र

Current directory is /Users/twillis/bin/ 
C-c C-f 

कुछ भी नहीं के साथ प्रस्तुत कर रहा हूँ करने के लिए पथ होता लेकिन

012,351,641 है
HellooKitty:hydrant twillis$ ps aux | grep pdb 
twillis 469 100.0 1.6 168488 67188 s002 Rs+ 1:03PM 0:52.19 /usr/local/bin/python2.5 /Users/twillis/projects/hydrant/bin/python /Users/twillis/bin/pdb /Users/twillis/projects/hydrant/bin/devappserver /Users/twillis/projects/hydrant/parts/hydrant-app/ 
twillis 477 0.0 0.0 2435120 420 s000 R+ 1:05PM 0:00.00 grep pdb 
HellooKitty:hydrant twillis$ 

कुछ

C-x [space] 

हो रहा है रिपोर्ट करेंगे कि एक ब्रेकपाइंट स्थापित किया गया है। लेकिन मैं चीज़ों को पाने के लिए प्रबंधन नहीं कर सकता।

ऐसा लगता है कि मुझे यहां कुछ स्पष्ट याद आ रहा है। क्या मैं हूँ

तो, इमैक में इंटरैक्टिव डिबगिंग सार्थक है? एक Google appengine ऐप संभव इंटरैक्टिव डीबगिंग है? इस काम पर मुझे कोई सुझाव कैसे मिल सकता है?

+0

यह [स्टैक ओवरफ़्लो] (http://www.stackoverflow.com) के लिए एक प्रश्न है। –

उत्तर

4

हम्म। आप इसे करने से थोड़ा अलग कर रहे हैं। मैंने आपकी विधि से प्रयोग नहीं किया है। मैं पीडीबी लाइब्रेरी मॉड्यूल का उपयोग सीधे, बिना किसी रैपर स्क्रिप्ट के, "-m" पायथन कमांड लाइन विकल्प का उपयोग करके, स्क्रिप्ट के रूप में मॉड्यूल को चलाने के लिए पाइथन को बताने के लिए करता हूं।

जरूरत से ज्यादा पूरी तरह से करने के लिए यहां के संचालन की मेरी अनुक्रम है:

  1. मैं Emacs में Alt-एक्स मारा, प्रकार "pdb", तो वापस जाएँ।
  2. ईएमएसीएस मुझे "पीडीबी चलाएं (इस तरह) चलाता है:" और मैं "python -m pdb myprogram.py" टाइप करता हूं।
  3. ईएमएसीएस पीडीबी के लिए एक डीबगर मोड विंडो बनाता है, जहां मैं डीबगर कमांड दे सकता हूं, और स्रोत कोड में प्रोग्राम के निष्पादन को ट्रैक करता हूं।

मुझे लगता है कि यह संभव है कि यह कुछ कारण है कि यह ऐपेंगिन के साथ अच्छा काम नहीं करता है। मैं इसे एक छोटे से अजगर कार्यक्रम के साथ पहले काम करने की सलाह देता हूं और एक बार जब आप जानते हैं कि यह काम कर रहा है, तो पूर्ण ऐप तक पहुंचने का प्रयास करें।

प्रैक्टिस में, मैं पीडीबी के साथ ज्यादा पायथन डीबगिंग नहीं करता हूं। मेरे अधिकांश डिबगिंग अनिवार्य रूप से "printf डिबगिंग" है, मेरे यूनिट परीक्षणों में (और कभी-कभी) वास्तविक कोड में प्रिंट स्टेटमेंट डालने के लिए किया जाता है।

+0

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