2009-02-17 13 views
8

मैं मिल गया है बहुत, पिछले कुछ वर्षों में कदम के माध्यम से करने के लिए इस्तेमाल किया डिबगर दोनों बिल्डर में, और ग्रहण में Pydev डिबगर का उपयोग कर।डिबगिंग वेब क्षुधा

वर्तमान में, मैं अजगर में कुछ बना रहा हूं और Google अनुप्रयोग इंजन पर यह चल रहा है, और मैं जोड़ने चाहिए कि मैं बहुत किसी भी वास्तविक वेब अनुप्रयोग विकसित करने के लिए नए हूँ, मैंने HTML कोड को संपादित करने से बहुत पहले कभी नहीं किया है।

तो, मैं गूगल के dev_appserver चल रहा हूँ और http://localhost में मेरे काम को देखने, खुदाई, और अभी, केवल उपकरण मैं मुद्दों की पहचान करने के लिए उपयोग कर रहा हूँ PMD (गरीब आदमी का डिबगर) है। । स्थानीय चर के मूल्य को देखने के लिए HTML पृष्ठों पर मूल रूप से चीजें लिखना।

क्या इससे निपटने के लिए कोई बेहतर तकनीक है?

उत्तर

7

dev_appserver सिर्फ एक अजगर स्क्रिप्ट है, तो आप बस Pydev डिबगर उचित तर्क के साथ कि स्क्रिप्ट पर के रूप में जहाँ तक मुझे पता के रूप में उपयोग कर सकते हैं।

यहाँ कि कैसे करना है पर एक बहुत विस्तृत गाइड है: "इस से निपटने के लिए एक बेहतर तकनीक है"

http://www.ibm.com/developerworks/opensource/library/os-eclipse-mashup-google-pt1/index.html

+0

ओह, बढ़िया लिंक। मैंने रन कॉन्फ़िगरेशन में dev_apperver डालने के बारे में भी सोचा नहीं था। मैं इसे अपने आवेदन के साथ निर्देशिका में चला रहा हूं, लेकिन ऐसा लगता है कि इसे काम करना चाहिए। – Baltimark

2

ज़रुरी नहीं।

"चरण-दर-डिबगर्स" उनकी स्वयं की समस्या है। वे एक तरह का मानसिक क्रैच हैं जो ऐसा कुछ ऐसा करने में आसान बनाता है जो ऐसा लगता है।

सबसे पहले, कुछ है कि उपयोगी हो सकता है के लिए http://code.google.com/appengine/docs/python/tools/devserver.html#The_Development_Console को देखो।

दूसरा, ध्यान दें कि --debug प्रिंटों वर्बोज़ कंसोल के लिए संदेशों डिबगिंग जबकि चल रहा है।

अंत में, ध्यान दें कि आप वेब अनुप्रयोगों तरह बातें लिखने के लिए अजगर अनुभव और गूगल AppEngine अनुभव के बहुत आवश्यकता होगी। उस अनुभव को पाने के लिए, print कथन वास्तव में काफी अच्छा है। यह आपको दिखाता है कि क्या हो रहा है, और यह आपको वास्तव में समझने के लिए प्रोत्साहित करता है कि या होने की उम्मीद होने का अनुमान है।

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

प्रिंट कथन सक्रिय है। आपको योजना बनाना है कि क्या होना चाहिए, कोड लिखें, और परिणामों को ध्यान से देखें कि योजनाएं क्या काम करती हैं या नहीं। यदि यह आपके द्वारा किए गए कार्यों को नहीं करता है, तो आपको अपनी परिकल्पना परिकल्पना और परीक्षण करना होगा। यदि यह काम करता है, तो आप क्या समझ रहे थे "समझ गए"। एक बार जब आप पाइथन और Google AppEngine के अर्थशास्त्र प्राप्त कर लेते हैं, तो आपकी समझ बढ़ जाती है और यह वास्तव में आसान हो जाता है।

+0

धन्यवाद। कोई अपराध नहीं, लेकिन मैं वास्तव में तोम की तरह कुछ ढूंढ रहा था। मैंने लंबे समय तक चरण-दर-चरण का उपयोग किया है और मैं उनके लाभ और कमियों से परिचित हूं; मैं अपने ऐप में उस कार्यक्षमता की तलाश में हूं। वह देव कंसोल बहुत अच्छा लगता है, यद्यपि। – Baltimark

+0

@ बाल्टिमर्क: कोई अपराध नहीं हुआ। डिबगर्स के माध्यम से कदम हल करने से अधिक समस्याएं पैदा करते हैं, लेकिन अगर आपको लगता है कि वे मदद कर रहे हैं, तो यह ठीक है। वे मदद नहीं कर रहे हैं, लेकिन यह आपके विकास की आपकी राय है जो यहां मायने रखता है, न कि मेरा अनुभव। –

4

मैं प्रिंट के बजाय लॉगिंग स्टेटमेंट का उपयोग करने का सुझाव दूंगा हालांकि आप उन्हें बेहतर नियंत्रित कर सकते हैं। पायथन में काफी अच्छी लॉगिंग लाइब्रेरी शामिल है।

Google App Engine से लॉग इन करने के लिए उदा। फायरबग में कुछ आसान टूल भी हैं जिन्हें FirePython कहा जाता है। यह आपके Django या WSGI ऐप (यह मिडलवेयर) के भीतर से फ़ायरबग कंसोल पर लॉग इन करने की अनुमति देता है।

1

GAE के लिए मेरे डिबगिंग टूलबॉक्स:

  • print बयान
  • Werkzeug debugger अगर मैं प्रत्येक त्रुटि पर कंसोल लॉग में जाने के लिए नहीं करना चाहते हैं के लिए एक विकल्प के रूप में मानक अजगर लॉगिंग (नहीं सब कुछ काम करता है, सबसे विशेष रूप से इंटरैक्टिव दुभाषिया सत्र)
  • http://localhost:8080/_ah/admin/interactive पर इंटरैक्टिव सांत्वना (Django के python manage.py shell लेकिन अभी भी रूप में के रूप में अच्छा नहीं ...)

प्रतीकात्मक डिबगर्स अन्यत्र के रूप में इतना मूल्यवान नहीं हैं, संभवतः क्योंकि पाइथन के बेहतर आत्मनिरीक्षण और प्रतिबिंब तंत्र।

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