2016-10-28 7 views
15

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

विधि 1: interactive shell debugging with pycharm के अनुसार, एक कोड इंटरैक्टिव डिबगर को pycharm संपादक में टाइप द्वारा

1> set a debugging point 
2> highlight the code you want to load to Python console 
3> alt+shift+E 

जब मैं इन चरणों का पालन लोड कर सकते हैं: मैं डिबग बिंदु निर्धारित, गति प्रदान करने के कोड डीबग डीबग पॉइंट, और कोड प्रेस alt + shift + e का चयन करें। डीबग कंसोल में कोड लोड करने के बजाय, यह डिफ़ॉल्ट रूप से पायथन कंसोल पर लोड होता है। मेरे पास चर और संकुल तक पहुंच नहीं है जिसे मैं पायथन कंसोल संदर्भ के तहत डीबग करना चाहता हूं।

मुझे पाइथन कंसोल को कम करना है, फिर इसे फिर से चलाएं। कभी-कभी यह डीबगर कंसोल में चलता है। उत्तर के नीचे "उस कंसोल का चयन करें जिसे आप लक्षित करना चाहते हैं" का सुझाव देते हैं। कदम क्या है? आप डीबगर पर क्लिक करते हैं? फिर कोड का चयन करें और एटीएल + शिफ्ट + ई दबाएं? मैंने कोशिश की, यह काम नहीं करता है।

संपादित करें: https://www.jetbrains.com/help/pycharm/2017.1/loading-code-from-editor-into-console.html

enter image description here

Method2: सरकारी दस्तावेज़ लेकिन बहुत उपयोगी नहीं मिला प्रकार और इंटरैक्टिव डिबगर कंसोल में सीधे प्रयोग कोड। हालांकि, कोड (एकाधिक लाइन) को वापस संपादक में लाने का कोई आसान तरीका नहीं है। कंसोल इतिहास स्वचालित रूप से नवीनतम से सबसे पुराने क्रमबद्ध किया जाता है। कंसोल इतिहास से कॉपी होने पर, आपके पास वांछित कोड की आखिरी पंक्ति संपादक में पहली पंक्ति के रूप में होती है। धागे के नीचे देखें, मेरे पास एक ही समस्या है। How to invert console history order in pycharm for copy pasting?

+1

बस कोड टुकड़ा मोड और कॉपी/पेस्ट जो कुछ भी कोड तुम वहाँ की तरह में पहले से अभिव्यक्ति का मूल्यांकन उल्लेख (Alt + F8) खिड़की का उपयोग करें। मेरे स्क्रीनशॉट से – heenenee

उत्तर

3

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

तो सवाल यह है कि, जब आप पिचर्म को पुनरारंभ करते हैं, तो क्या पाइथन कंसोल उन चीज़ों को याद रखता है जिन्हें आपने पिछली बार पिक्चर खोल दिया था? नहीं, लेकिन जब आप अपना प्रोग्राम चलाते हैं तो साजिश ovbiously काम करता है क्योंकि plt लाइन 2 पर परिभाषित किया गया है। यदि आप लाइन 2 के बिना लाइन 6 चलाते हैं तो आपको समस्याएं होती हैं।

यह भी है कि आप लाइन छह जो अलग बात पूरी तरह है पर एक ब्रेकपाइंट ...

8

Alt + शिफ्ट + दबाने आदेश लागू करेगा "कंसोल में चुनाव निष्पादित" सेट लग रहा है। यदि पहले से कोई खुला कंसोल नहीं है, तो PyCharm एक नियमित (गैर-डीबग) पायथन कंसोल खोल देगा।

डीबगर कंसोल में चयन निष्पादित करने के लिए, आपको पहले डीबगर चलाना होगा। आपको डीबगर का उपयोग करके एक स्क्रिप्ट चलाने की आवश्यकता है और इसे ब्रेकपॉइंट के साथ रोकें, फिर कमांड अपेक्षित व्यवहार करेगा।

यदि आपके पास एक से अधिक खुले कंसोल हैं, उदा। एक नियमित और एक डीबगर, आपको कीबोर्ड कमांड करने से पहले लक्ष्य कंसोल को सक्रिय करना होगा।

+0

आप देख सकते हैं कि मैं पहले ही डीबग मोड में हूं। लेकिन जब alt + shift + E दबाते हैं, यह अभी भी नियमित पायथन कंसोल में चलता है। मुझे नियमित पायथन कंसोल को कम करना है, और इसे डीबग कंसोल में चलाने के लिए फिर से Alt + shit + E दबाएं। – Lisa

+0

जब मैंने इसका परीक्षण किया, तो 'Alt + Shift + E' वर्तमान में सक्रिय कंसोल पर चयन भेज देगा। तो जब आपके पास कई कंसोल खुले होते हैं, तो आपको सबसे पहले उस लक्ष्य को चुनने की आवश्यकता होती है जिसे आप लक्षित करना चाहते हैं। –

+0

अभी भी संघर्ष कर रहा है। मैंने डिबग पॉइंट सेट किया है, कोड डीबग किया है, और कोड का चयन करें, यह डिफ़ॉल्ट रूप से डीबगर कंसोल के बजाय पायथन कंसोल पर लोड किया गया है। मुझे पायथन कंसोल को कम करना है, फिर इसे फिर से चलाएं और कभी-कभी यह डीबगर कंसोल में चलता है। "आप जिस लक्ष्य को लक्षित करना चाहते हैं उसे चुनने के लिए आपने क्या किया?" आप डीबगर पर क्लिक करते हैं? कोड का चयन करें और एटीएल + शिफ्ट + ई दबाएं? – Lisa

1

अलहो यह एक पिचर्म की सुविधा नहीं है, मैं दृढ़ता से jupyter notebook को आजमाने का सुझाव दूंगा। यह प्रोटोटाइप के लिए बहुत उपयोगी है।

यदि आप इसे पिचर्म तरीका करना चाहते हैं, क्योंकि डैग होडाहल ने बताया, एक विकल्प Alt+Shift+E के साथ कंसोल में कोड के ब्लॉक को निष्पादित करना है।

हालांकि, भयानक पिचर्म के डीबगर का पूरी तरह से लाभ उठाने के लिए, आपको unit test लिखना चाहिए जिसे आप कोड (या डीबग) करना चाहते हैं। इस तरह आप ब्रेकपॉइंट्स को ठीक से डीबग जोड़ सकते हैं, या भविष्य में अपेक्षित व्यवहार को स्वचालित रूप से सुनिश्चित कर सकते हैं। फिर भी, यूनिट परीक्षणों के लेखन में कई अन्य फायदे हैं जिनकी आप सराहना करेंगे।

0

यह प्रश्न का उत्तर नहीं है, लेकिन मददगार हो सकता है।

enter image description here

3
  1. पहले सुनिश्चित करें कि आप ठीक ढंग से छोड़ दिया है, जो एक लाल X है पर पास सांत्वना बटन (this page देखें) पर क्लिक करके (बस छिपा हुआ नहीं) कंसोल बंद कर दिया है बनाते हैं।
  2. अब (पुनः-) कंसोल खोलें और "डिबगर संलग्न करें" आइकन पर क्लिक करें, जो बाईं ओर नीचे से हरे रंग की बग आइकन (हरे रंग के प्लस के ऊपर) है। इसे धक्का और भूरे रंग में बनना चाहिए।
  3. अब यदि आप अपने मॉड्यूल आयात करते हैं और उनमें फ़ंक्शंस चलाते हैं, तो उन कार्यों में सेट किए गए किसी भी ब्रेकपॉइंट को सामान्य की तरह हिट किया जाना चाहिए और आप एक स्क्रिप्ट डिबग करने की तरह ही उनके माध्यम से सिंगल-चरण कर सकते हैं। आप सीधे कंसोल में टाइप करके या कोड चुनकर और "कंसोल में निष्पादित" चुनकर इसे किसी अन्य उत्तर में वर्णित कर सकते हैं। ऐसा लगता है जैसे स्टैक ट्रेस काम नहीं करता है (मेरे त्वरित परीक्षण में)। उदाहरण के लिए, यदि आप समारोह "dir" निर्देशिका में "fn()" फ़ाइल में "foo.py" है, इस प्रयास करें: import dir.foo dir.foo.fn()

  4. के बाद आप इसे आयात आप अपने कोड को बदलते हैं, अजगर सांत्वना अभी भी होगा पुराने कोड का उपयोग कर रहे हैं। (यदि आप ब्रेकपॉइंट्स पर रुकते हैं, तो यह बहुत भ्रमित हो सकता है।) आप नीचे दिए गए शो के रूप में reload फ़ंक्शन को कॉल करके नए कोड में अपडेट को मजबूर कर सकते हैं। वैकल्पिक रूप से, चरण 1 पर वापस जाएं (जो एक अच्छा विचार है अगर चीजें भ्रमित रूप से तोड़ने लगती हैं)। from importlib import reload # This line only needed on Python 3 reload(dir.foo)

+0

मैंने कोशिश की, लेकिन व्यवहार हमेशा सुसंगत नहीं है। जब मैं किसी फ़ंक्शन के अंदर डीबग पॉइंट डालता हूं, तो चर को पाइथन कंसोल के माध्यम से एक्सेस नहीं किया जा सकता है। हालांकि, यदि डीबग बिंदु मुख्य पर है, तो कुछ चर सुलभ हैं, लेकिन डेटाफ्रेम नहीं हैं। – Lisa

+0

क्या मॉड्यूल आयात करने के बाद आपने डीबगर संलग्न किया है? –

+0

क्या आप अपना उत्तर संपादित करेंगे और अधिक जानकारी देंगे? क्या आप पाइथन कंसोल में कोड लोड करते हैं? या डीबगर? क्या आप डीबग मोड के तहत भागते हैं? मैं यह सुनिश्चित करना चाहता हूं कि आपका उत्तर अधिक लोगों की मदद करता है – Lisa

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