2010-06-19 7 views
9

मैं वर्तमान में आम तुतलाना जानने की कोशिश कर रहा हूँ और मैं SBCL (मुझे आशा है कि एक सभ्य कार्यान्वयन पसंद है।)कैसे SBCL में डिबगर बंद करने के लिए

माणिक से आ और आईआरबी का उपयोग कर रहा स्वत: लगता है इस गलती पर हर गलती पर एक डीबगर में चले गए। जब मैं चारों ओर खेल रहा हूं तो अस्थायी रूप से इसे बंद करने का कोई तरीका है।

उत्तर

10

आम लिस्प में एक चर *debugger-hook* है, जिसे किसी फ़ंक्शन पर बाध्य/सेट किया जा सकता है।

* (aref "123" 10) 

debugger invoked on a SB-INT:INVALID-ARRAY-INDEX-ERROR: 
    Index 10 out of bounds for (SIMPLE-ARRAY CHARACTER 
           (3)), should be nonnegative and <3. 

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL. 

restarts (invokable by number or by possibly-abbreviated name): 
    0: [ABORT] Exit debugger, returning to top level. 

(SB-INT:INVALID-ARRAY-INDEX-ERROR "123" 10 3 NIL) 
0] 0 

* (defun debug-ignore (c h) (declare (ignore h)) (print c) (abort)) 

DEBUG-IGNORE 
* (setf *debugger-hook* #'debug-ignore) 

#<FUNCTION DEBUG-IGNORE> 
* (aref "123" 10) 

#<SB-INT:INVALID-ARRAY-INDEX-ERROR {1002A661D1}> 
* 
+0

यह बहुत अच्छा काम करता है, मुझे यकीन है कि एक दिन मुझे डीबगर की आवश्यकता होगी लेकिन चीजों का परीक्षण करने के लिए यह अभी थोड़ा परेशान है :) धन्यवाद उत्तर के लिए – nkassis

8

वहाँ एक --disable-debugger कमांड लाइन विकल्प, जैसे:

$ sbcl --disable-debugger 

आदमी पृष्ठ से:

डिफ़ॉल्ट रूप से जब SBCL एक त्रुटि का सामना करना पड़ता है, यह अंतर्निहित डिबगर में प्रवेश करती है, की अनुमति देता है इंटरैक्टिव निदान और संभावित मध्यस्थता। यह विकल्प डीबगर को अक्षम करता है, त्रुटियों को बैक-ट्रेस प्रिंट करने के लिए त्रुटियों का कारण बनता है और इसके बजाय स्थिति 1 से बाहर निकलता है - जो बैच प्रोसेसिंग के लिए उपयुक्त ऑपरेशन का एक तरीका बेहतर है। एसबी-एक्सटी पर उपयोगकर्ता मैनुअल देखें: विवरण के लिए डिस्बल-डेबगर्जर ।

--noinform और --noprint सीएल विकल्प भी उपयोगी हो सकते हैं।

+0

अच्छा खोज, मैं अंत में बाहर निकलने से रोकने के लिए एक रास्ता खोजने की कोशिश कर रहा था। – nkassis

+0

क्लिसप के साथ सीखने वाले किसी भी व्यक्ति के लिए समकक्ष विकल्प है: $ clisp -on-error abort – silijon