2010-04-04 16 views
6

मुझे नहीं पता कि मुझे the documentation for the elisp debugger पर इतनी परेशानी क्यों हो रही है।emacs डीबगर: मैं चरण-दर-चरण कैसे कर सकता हूं?

मुझे लगता है कि इसमें "चरण-दर-चरण" (डी) के लिए एक आदेश है। लेकिन मेरे जीवन के लिए, मैं एक कदम बाहर या कदम खत्म नहीं देख सकता।

क्या कोई मदद कर सकता है?

मैं पश्व-अनुरेखन बफर में इस है:

... जहाँ मैं कर्सर रखें करते हैं, और मैं क्या कुंजी टाइप करते हैं, पार्स राज्य() fn से बाहर कदम ? इसका मतलब है कि, उस एफएन रिटर्न तक चलाएं, और फिर डीबगर में फिर से रुकें।

उत्तर

1

'सी' और 'जे' काम एक चरण-दर-चरण और कदम की तरह काम करते हैं। जब एक ध्वजांकित फ्रेम ("*" द्वारा इंगित) का सामना किया जाता है (दस्तावेज़ "exited" कहते हैं लेकिन ऐसा लगता है कि डीबगर कैसे व्यवहार करता है), डीबगर फिर से दर्ज किया जाएगा। जब शीर्ष फ्रेम ध्वजांकित किया जाता है, तो वे चरण-दर-चरण की तरह काम करते हैं; जब यह नहीं होता है, तो वे चरण-बाहर की तरह काम करते हैं।

आपके उदाहरण बैकट्रैक में, टाइपिंग line-beginning-position से c-parse-state में चरणबद्ध हो जाएगी। फ्रेम ध्वज को साफ़ करना चाहिए, इसलिए दूसरी बार टाइप करना c-parse-state से बाहर होना चाहिए।

4

डीबगिंग करते समय, मैं दबाता हूं? और मैं देख रहा हूँ:

o    edebug-step-out 
f    edebug-forward-sexp 
h    edebug-goto-here 

मेरा मानना ​​है कि (यह step-out है) और (अधिक कदम की तरह) आप जो खोज रहे हैं, हालांकि मैं भी अत्यंत उपयोगी पाते हैं।

+0

मुझे पता है कि आपको विश्वास करना मुश्किल होगा, लेकिन मैं डीबग का उपयोग कर रहा था, एडबग नहीं। क्या अंतर है! पारितोषिक के लिए धन्यवाद। – Cheeso

+0

@ चेसियो, हे! मुझे यह भी पता नहीं था कि आपका प्रश्न तब तक 'एम-एक्स डीबग' था। –

+0

आप बेहतर नहीं थे, जानते हुए नहीं। डीबग का उपयोग करना असंभव है। – Cheeso

0

एचएम। मैं, एक के लिए, edebug को debug पसंद करते हैं, लेकिन प्रत्येक अपने खुद के लिए ...

debug के रूप में, मैं का उपयोग d, c, e, और q

आप debug, एक बात का उपयोग करते हैं को ध्यान में रखना है, जो समय और प्रयास बचा सकता है, कि जब आप एक मैक्रो कॉल को देखने के (# साथ शुरू होता है) तुम सिर्फ c मारा मैक्रो विस्तार करने के लिए कर सकते हैं - वहाँ है आम तौर पर मैक्रो विस्तार कोड में खुदाई करने में कोई समझ नहीं है (जब तक कि आपने मैक्रो लिखा नहीं है और आप इसे डीबग करने का प्रयास कर रहे हैं)। dolist के लिए एक और block के लिए एक:

विशेष रूप से, dolist के लिए, वहाँ c का उपयोग करने पर छोड़ macroexpansion के दो स्तर हैं।

एचटीएच।

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

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