debugging - Elisp डीबग कैसे करें?




emacs (4)

आम तौर पर डीबग करने का सबसे आसान तरीका printf का उपयोग कर रहा है। Emacs-lisp डीबग करने के लिए मैं क्या कर सकता हूं? मैं एलीक्स संपादक को elisp से कुछ प्रिंट कैसे कर सकता हूं? या elisp कोड डीबग करने का कोई तरीका है?

उदाहरण के लिए, मैं जांच सकता हूं कि निम्न कोड .emacs फ़ाइल में चलाया गया है या नहीं?

(load "auctex.el" nil t t)

अपने प्रश्नों का उत्तर एक-एक करके:

  • कुछ प्रिंट करें: एक लाख तरीके हैं। (संदेश "हैलो") स्ट्रिंग को गूंज क्षेत्र में रखता है; ("हैलो" डालें) स्ट्रिंग को वर्तमान बफर में बिंदु पर रखता है ...
  • मैं कैसे जांच सकता हूं कि निम्न कोड चलाया गया है: मैं केवल "auctex.el" को (कह सकता हूं) "frotzumotzulous" (यानी, किसी भी स्ट्रिंग को तब तक बदल दूंगा, जब तक कि यह वास्तविक फ़ाइल का नाम न दे) और फिर देखें कि आपको एक त्रुटि संदेश मिलता है या नहीं। अगर आपको कोई त्रुटि नहीं मिलती है, तो स्पष्ट रूप से कोड चलाया नहीं जा रहा है।

जीएनयू एमएक्स में दो डिबगर्स हैं:

  • edebug - यहां एक और पोस्ट में समझाया
  • डिबग

मैं debug उपयोग करता हूं। ये सामान्य प्रवेश बिंदु हैं (इसका उपयोग करने के तरीके):

  • Mx debug-on-entry एक फ़ंक्शन के बाद जिसे आप डीबगर का उपयोग करके दर्ज करना चाहते हैं।

  • Mx toggle-debug-on-error - जब कोई त्रुटि उठाई जाती है तो डीबगर दर्ज करें।

  • Mx toggle-debug-on-quit - जब उपयोगकर्ता सीजी हिट करता है तो डीबगर दर्ज करें।
  • उन स्थानों पर डीबगर दर्ज करने के लिए, अपने कोड में विशेष स्थानों (ब्रेकपॉइंट्स) पर debug फ़ंक्शन debug लिए स्पष्ट कॉल करें:
    (debug)

आप किसी विशेष मूल्यांकन के विवरण को छोड़ने के लिए डी , या सी का उपयोग करके डीबगर से कदम उठाते हैं।


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


यह मूल्यों के मुद्रण के लिए उपयोगी है

(message "Hello (%s)" foo)

लेकिन डेटा संरचनाओं के लिए इतना अच्छा काम नहीं करता है। इसके लिए, उपयोग करें

(prin1 list-foo)

या (prin1-to-string) इसे एक (संदेश) में एम्बेड करने के लिए।





elisp