Org मोड में कोड ब्लॉक करना डीबग करना


11

क्या ओआर-मोड ब्लॉक में अनुरेखण त्रुटियों को आसान बनाने के लिए कोई उपकरण उपलब्ध हैं? (मैं विशेष रूप से अजगर के साथ काम कर रहा हूं)

मेरा वर्तमान वर्कफ़्लो कोड को कॉपी करना है जो एक स्रोत ब्लॉक में काम करता है, और केवल न्यूनतम संशोधन करने का प्रयास करता है। यदि बड़ी त्रुटियां होती हैं, तो मैं या तो इसे दूसरी फ़ाइल में कॉपी करता हूं, या ब्लॉक को टेंगल करता हूं और परिणामस्वरूप फाइल को डीबग करता हूं।

क्या कोई उपकरण है जो मुझे याद आ रहा है? (उदाहरण के लिए, संकलन मोड जैसा कुछ ऐसा है जहाँ यह आपको उस त्रुटि के लिए ले जाएगा।)

संपादित करें: उदाहरण के लिए, मैंने अभी Cc Cv v को पाया, जो कि बफ़र के साथ विस्तारित संदर्भों के साथ एक बफर लाता है। दुर्भाग्य से, इसमें हेडर तर्क शामिल नहीं हैं, इसलिए इससे कोड को पहले दुभाषिया में आयात किए बिना नहीं चलाया जा सकता है। इसी तरह, अगर मेरा कोई रिटर्न स्टेटमेंट है, जो इसे निष्पादित होने से बचाता है, और बफर एडिटेबल नहीं है, तो एक अजगर ब्लॉक से रननेबल सोर्स पाने के लिए कई कदम उठाता है।


3
Emacs.stackexchange.com/questions/13244/… देखें । मेरे वर्तमान पसंदीदा समाधान है (org-src-debug)। इसका लाभ यह है कि आप इनपुट तर्कों के साथ स्रोत कोड ब्लॉक को डीबग कर सकते हैं।
टोबियास

इसी तरह की समस्याओं वाले अन्य लोगों के लिए टिप्पणी करें: user2699 ने इस सवाल को संपादित किया कि वह अजगर स्रोत कोड ब्लॉक को डिबग करना चाहता है । टोबियास की अंतिम टिप्पणी केवल एमएसीएस-लिस्प कोड के निष्पादन पर लागू होती है ।
टोबियास

1
क्या आपने :sessionअपने कोड ब्लॉक में हेडर जोड़ा है ? उदा :session *my-python*। फिर बस *my-python*दूसरे फ्रेम या विंडो में बफर में स्क्रिप्ट का निष्पादन देखें । मुझे लगता है कि आप इस सही से अधिक परिष्कृत कुछ चाहते हैं?
मेलियोरैटस

@Melioratus, यह थोड़ा आदिम है (अच्छी तरह से त्रुटियों को संभालने के लिए प्रतीत नहीं होता है, और अजगर कंसोल में अतिरिक्त आउटपुट जोड़ता है), लेकिन यह कुछ भी नहीं से बहुत बेहतर है। और अजगर कंसोल बहुत अच्छा है। आपको उसे उत्तर के रूप में प्रस्तुत करना चाहिए।
user2699

@ टोबियास, धन्यवाद, यह उस तरह की चीज है जिसकी मैं तलाश कर रहा हूं, सिर्फ विशिष्ट के लिए विशिष्ट नहीं।
user2699

जवाबों:


7

विधि 1

  1. :sessionअपने स्रोत ब्लॉक में हेडर जोड़ें ।

    उदाहरण में ,: सत्र शीर्ष लेख का उपयोग करके बफर नाम के अंदर कोड निष्पादित किया जाएगा *my-python*और डिबग संदेश प्रदर्शित करेगा।

    #+BEGIN_SRC python :session *my-python*
      'Hello {0}\n'.format('World')
    #+END_SRC
    

    सुझाव:

    • C-c C-v C-zस्क्रीन को लंबवत रूप से विभाजित करने और इंटरैक्टिव *my-python*बफ़र प्रदर्शित करने के लिए उपयोग करें ।
    • C-c C-v ?अन्य उपयोगी शॉर्टकट प्रदर्शित करने के लिए उपयोग करें ।

विधि 2

  1. कोड ब्लॉक में जगह बिंदु और ब्लॉक का उपयोग कर संपादित करें C-c ', यानी org-edit-special। यह विधि आपको python-modeअंतर्निहित कार्यक्षमता का उपयोग करने की अनुमति देगा ।

  2. अजगर इंटरप्रेटर के साथ शुरू करें C-c C-p, जो विंडो को विभाजित करेगा और बफर नाम को खोल देगा *Python*। अजगर दुभाषिया बफर प्रेस पर स्विच करने के लिए C-c C-z

    नोट: हाल ही में मैंने देखा कि *Warnings*इसके बजाय एक बफर प्रदर्शित किया गया है। बस *Warnings*बफर के अंदर बिंदु रखें और बफर qप्रदर्शित करने के लिए दबाएं *Python*

  3. समाप्त होने पर, अपने अपडेट किए गए कोड को कोड ब्लॉक के साथ प्रचारित करें C-c 'या इसके साथ किसी भी परिवर्तन को छोड़ दें C-c C-k


ध्यान दें कि इस कोड का उपयोग करके परीक्षण किया गया था:
emacs संस्करण: GNU Emacs 26.1
org- मोड संस्करण: 9.1.14

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.