2010-02-07 15 views
9

मैं python -m pdb myapp.py पर कॉल कर रहा हूं, जब एक अपवाद आग लगती है, और मुझे सामान्य रूप से समस्या की जांच करने के लिए पीडीबी दुभाषिया पर वापस फेंक दिया जाएगा। हालांकि curses.wrapper() के माध्यम से बुलाए जाने के बाद इस अपवाद को फेंक दिया जा रहा है और पीडीबी दुभाषिया को बेकार करने के लिए श्राप मोड में प्रवेश किया है। मैं इसके आसपास कैसे काम कर सकता हूं?एक ही समय में एक डीबगर और शाप का उपयोग करना?

+0

मैं वहाँ उपयोगी जानकारी http://wiki.python.org/moin/PythonDebuggers –

+13

मैं एक हंसी मिला हो सकता है लगता है का उपयोग इस के शीर्षक पर। हाँ डीबगिंग और शाप मेरे दिमाग में एक साथ जाने लगते हैं। – HLGEM

उत्तर

8

जेम्स का जवाब अच्छा है और मैंने इसे ऊपर उठाया है, लेकिन मैं अपने कार्यक्रम के तर्क और प्रस्तुति परतों को विभाजित करने की कोशिश करने पर भी विचार करता हूं। शाप को लाइब्रेरी के शीर्ष पर एक पतली परत रखें और एक साधारण ड्राइवर लिखें जो त्रुटि को फिर से बनाने के लिए सही दिनचर्या का आह्वान करता है। फिर आप जरूरी हो सकते हैं और क्या कर सकते हैं।

एक और तरीका जिसे मैं सोच सकता हूं debug नामक एक फ़ंक्शन बनाना है या कुछ जो आपको नियमित स्क्रीन पर वापस फेंक देता है और पीडीबी का आह्वान करता है। फिर उस कोड से ठीक पहले चिपकाएं जो अपवाद उठाता है और अपना प्रोग्राम चलाता है। जैसे

def debug(stdscr): 
    curses.nocbreak() 
    stdscr.keypad(0) 
    curses.echo() 
    curses.endwin() 
    import pdb; pdb.set_trace() 

कुछ जाहिर है, यह क्या curses.wrapper समारोह के साथ किया जाता के समान है। इसका संक्षेप में http://www.amk.ca/python/howto/curses/ पर उल्लेख किया गया है।

+0

शाप तर्क को अलग रखने के लिए एक बुद्धिमान सुझाव, और 'curses.wrapper' सूचक के लिए धन्यवाद। –

+0

आपका स्वागत है। –

7

पायथन से परिचित नहीं है, यह वही नहीं हो सकता है जो आप चाहते हैं। लेकिन स्पष्ट रूप से, winpdb एक स्क्रिप्ट से संलग्न हो सकता है - जैसे कि जीडीबी एक चल रही प्रक्रिया (IIUC) के लिए कर सकता है।

http://winpdb.org/docs/launch-time/

करें नाम से गुमराह नहीं किया जा सकता, यह मंच स्वतंत्र है।

+1

अच्छा सुझाव। तुमने मुझे इस पर हरा दिया। इस समस्या के बारे में जाने का यह सही तरीका होगा। जीयूआई और डिमन प्रक्रियाओं के लिए भी उपयोगी है। –

+0

मैं इसके बारे में सब भूल गया था! –

+0

मुझे नहीं लगता कि कोर लाइब्रेरी के पीडीबी का उपयोग करके संलग्न करना संभव है? –

0

उपयोग pyclewn

आप vim साथ pyclewn उपयोग कर सकते हैं। या pdb क्लोन, pyclewn अपनी अच्छी, अपनी तरह gdb के कोर, दूरस्थ डीबग कर सकते हैं

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