मैंने एक समस्या हिट की है जो क्षेत्र निष्क्रिय है (क्षणिक-चिह्न-मोड में)। फ़ंक्शन deactivate-mark
को कहा जाता है और मैं यह पता लगाना चाहूंगा कि यह कहां से (और क्यों) कहा जाता है।
मैंने कोशिश की M-x debug-on-entry RET deactivate-mark
और यह रुक गया लेकिन मुझे फोन करने वाले का पता लगाने का कोई तरीका नहीं मिला। संपूर्ण प्रदर्शित स्टैकट्रेस है:
Debugger entered--entering a function:
* deactivate-mark()
मैंने कोशिश की M-x edebug-eval-defun
लेकिन एडबग कॉलर को भी नहीं दिखाता है।
मुझे कैसे पता चलेगा कि क्यों (कहाँ से) deactivate-mark
कहा जाता है? मैं बैकट्रेस या स्टैकट्रेस फ़ंक्शनलिटी की तलाश कर रहा हूं।
संपादित करें:
एक advice-add
चाल:
(defun message-show-backtrace ()
(message "%s" (backtrace-frame 10)))
(advice-add deactivate-mark :before #'message-show-backtrace)
में पैदा करता nil
है *Messages*
।
संपादित करें: के बारे में अधिक जानकारी deactivate-mark
: http://emacshorrors.com/posts/deactivate-mark.html
deactiveate-mark
और अपने सलाह समारोह backtrace-frames
में पूरे कॉल स्टैक का एक दृश्य प्राप्त करने के लिए उपयोग करते हैं यदि एडिबॉग वह नहीं दिखा रहा है जो आप अपेक्षा करते हैं।
advice-add
और के बारे में संपादित करें backtrace-frame
। इससे कोई फायदा नहीं हुआ।
self-insert-command
और "सी-सोर्स कोड 'में एक सेल्फ-इंसर्ट-कमांड एक इंटरैक्टिव बिल्ट-इन फ़ंक्शन है।" यह, अब तक उल्लिखित अन्य व्यवहार के साथ मिलकर बताता है कि किसी के साथ डिबग करना होगा gdb
।
emacs -Q
, डिबग चालूM-x debug-on-entry deactivate-mark
करेंC-<SPC>
, मार्क सक्रिय करें , एक चरित्र टाइप करें ।