2011-10-08 8 views
7

में एक चर का निरीक्षण करना मैं एक निर्धारित ब्रेकपॉइंट पर एक चर के मान का निरीक्षण करने की कोशिश कर रहा हूं। यहां मेरा सरलीकृत कोड है:लिस्पी एसएलईएमई डीबगर

(defun foo() 
    (maplist (lambda (var) 
     (break) 
     var) 
     '(a b c))) 

कीचड़ इस बिंदु पर डीबगर मोड में जाती है। ":" तो मैं या तो दबा कर eval करने की कोशिश या "ई" कुंजी और उसके बाद मैं टाइप "(कार वर)", लेकिन कीचड़ कह रहती है:

चर वीएआर अबाध है। [स्थिति के प्रकार के अबाध-चर]

मैं करने के लिए के रूप में उलझन में हूँ कारण है कि यह बाद से "(तोड़)" यह कहकर है गुमनाम समारोह के भीतर और "var" के दायरे के भीतर है।

उत्तर

4

यह मेरे लिए सीसीएल और सीएलआईएसपी के तहत काम करता है। मुझे लगता है कि यह काम आपके कार्यान्वयन पर निर्भर करता है, और शायद आपकी OPTIMIZE सेटिंग्स। आप कोशिश कर सकते हैं:

(declaim (optimize (debug 3))) 

इसे प्रभावी होने के बाद आपको अपने कोड को फिर से कंपाइल करना होगा।

या शायद, यदि आपका कार्यान्वयन व्याख्या का समर्थन करता है, तो आप इसे आजमा सकते हैं, क्योंकि कुछ कार्यान्वयन संकलित कोड की तुलना में व्याख्या के लिए बेहतर डीबगिंग संभावनाएं प्रदान करते हैं।

+1

इसके अलावा, निश्चित रूप से आपको 'e' दबाते समय सही फ्रेम में होना होगा, लेकिन मुझे लगता है कि आप इसे जानते हैं, और वही है जहां आप डिफ़ॉल्ट रूप से समाप्त होते हैं। – danlei

+0

हां, यह मेरे लिए काम करता है, धन्यवाद। साथ ही, एक बार जब आप "(अस्वीकरण (ऑप्टिमाइज़ (डीबग 3) सेट करें))" लाइन, आपको परिवर्तन के प्रभावी होने के लिए अपने लिस्प कोड को फिर से कंपाइल करना होगा। और हां, डीबगर में उचित चर में मूल्यांकन करते समय आपको सही फ्रेम में होना होगा। –