यदि कोई त्रुटि Emacs लिस्प कोड में संकेतित है, और debug-on-errorहै t, तो मुझे एक बैकट्रेस बफर मिलता है जो यह पता लगाना आसान बनाता है कि त्रुटि कहां हुई। हालाँकि, त्रुटियों के लिए जो नेटवर्क से एक प्रतिक्रिया को असिंक्रोनस रूप से संसाधित करते समय होती है, यह बैकट्रेस बफर को पॉप अप करने के लिए कष्टप्रद होगा, इसलिए मैं त्रुटि को पकड़ता हूं condition-caseऔर इसे लॉग करता हूं ।
इसलिए जब मैं एक त्रुटि को संभाल रहा हूं condition-case, तो क्या त्रुटि के बिंदु पर बैकट्रेस तक पहुंचने का एक तरीका है? backtraceफ़ंक्शन को कॉल करने से हैंडलर के अंदर कोड का बैकट्रेस हो जाता है, जो कि मैं नहीं देख रहा हूं।
(condition-case e
(do-something-that-might-fail)
(error
(message "%s"
;; This gets the wrong backtrace!
(with-temp-buffer
(let ((standard-output (current-buffer)))
(backtrace)
(buffer-string))))))
do-something-that-might-failस्टैक-ट्रेस उत्पन्न किया होगा और इसे उस त्रुटि के साथ संलग्न करेगा जो इसे उठाती है।
magithub-errorकार्य ऐसा ही कुछ करता है जो मुझे लगता है, लेकिन मैं अभी कंप्यूटर पर नहीं हूं। यह मदद कर सकता है।