2011-02-25 14 views
12

कुछ प्रकार के कोड में स्टैक को उड़ाने के बिना अनंत लूप का कारण अपेक्षाकृत आसान है। क्लोजर-टेस्ट का उपयोग करके इस प्रकृति के कोड का परीक्षण करते समय, क्या स्विंक सर्वर को पुनरारंभ किए बिना मौजूदा चल रहे परीक्षणों को निरस्त करने का कोई तरीका है?लीनिंगेन और स्वैंक/कीचड़ के साथ emacs में क्लोजर परीक्षण चलाते समय अनंत लूप रोकना

वर्तमान में मेरे कार्यप्रवाह

$ lein swank 

शामिल है कनेक्ट slime-connect का उपयोग कर Emacs साथ स्वांक, और परीक्षण करने के लिए स्विच, C-c C-, साथ निष्पादित करने के लिए, अनंत लूप जब तक की गई जांच, तो बस लौट लेकिन एक सीपीयू अभी भी मंथन कर रहा है परीक्षण पर दूर। मैंने इसे रोकने का एकमात्र तरीका पाया है कि लीन स्विंक को पुनरारंभ करना है, लेकिन ऐसा लगता है कि यह अपेक्षाकृत आम समस्या होगी? किसी के पास बेहतर समाधान है?

उत्तर

12

हां, प्रोग्रामर के विकास में अनंत लूप लिखने के लिए यह एक आम समस्या है :)। और जवाब बहुत आसान है। इसे "इंटरप्ट कमांड" कहा जाता है और यह C-c C-b

Leiningen के पास इसके साथ कुछ लेना देना नहीं है। यह एसएलईएमई/स्वैंक/क्लोजर है। जब आप Emacs में कोड का मूल्यांकन करते हैं तो आप क्लोजर के भीतर एक नया धागा पैदा कर रहे हैं। एसएलईएमई उन धागे का संदर्भ रखता है और आपको दिखाता है कि Emacs मॉडलिन में कितने दौड़ रहे हैं। यदि आप एक ग्राफिकल वातावरण में हैं तो आप मॉडलिन पर क्लिक कर सकते हैं जहां यह आपके नामस्थान को इंगित करता है और बहुत सारे विकल्प देखता है। एक विकल्प "इंटरप्ट कमांड"

इवल (while true) और C-c C-b एक संवाद प्राप्त करने के लिए java.lang.ThreadDeath त्रुटि शायद एक विकल्प के साथ त्रुटि प्राप्त करने के लिए है। आप उस थ्रेड को छोड़ने के लिए 0 या q टाइप कर सकते हैं, उस त्रुटि संदेश बफर को मारें और अपने पिछले बफर पर फ़ोकस लौटाएं।

1

प्रति this old discussion के रूप में, (use 'clojure.contrib.repl-utils)) और (add-break-thread!) user.clj को जोड़ने आप लंबे समय से चल रहा है मूल्यांकन/processe को SIGINT पारित करने के लिए C-c C-c प्रेस करने में सक्षम होना चाहिए।

+0

मेरा वर्तमान Emacs सेटअप 'सी-सी सी-सी' को 'कीचड़-अंतराल' से बांधता है जो व्यवहार करता है जैसा आप उम्मीद करेंगे – skuro

1

यदि अन्य सभी विफल हो जाते हैं .. alt-x slime-quit-lisp और REPL को पुनरारंभ करें। निश्चित रूप से Psyllo के जवाब का प्रयास करें।

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