This पृष्ठ सहायता कर सकता है।
Debug.trace
आपका मित्र है, यह आपको अनिवार्य रूप से कुछ printf
डिबगिंग करने की अनुमति देता है। यह अपने पहले तर्क का मूल्यांकन और प्रिंट करता है और फिर अपना दूसरा देता है। तो अगर आप की तरह
foo :: Show a => a -> a
foo = bar . quux
कुछ है आप निम्न के लिए foo
बदलकर foo के पैरामीटर का 'मान' डिबग कर सकते हैं: के रूप में यह पहले किया था
import Debug.Trace(trace)
foo :: Show a => a -> a
foo x = bar $ quux $ trace ("x is: " ++ show x) x
foo अब उसी तरह काम करेंगे, लेकिन जब आप foo 1
पर कॉल करते हैं तो अब मूल्यांकन के दौरान x is: 1
को stderr पर प्रिंट किया जाएगा।
अधिक गहराई से डीबगिंग के लिए, आप जीएचसीआई के डीबगिंग कमांड का उपयोग करना चाहेंगे। विशेष रूप से, ऐसा लगता है कि आप :force
कमांड की तलाश में हैं, जो एक चर के मूल्यांकन को मजबूर करता है और इसे प्रिंट करता है। (वैकल्पिक :print
आदेश है, जो चर का जितना प्रिंट के रूप में किसी भी अधिक का मूल्यांकन के बिना, का मूल्यांकन किया गया है।)
ध्यान दें कि :force
एक चर की सामग्री को पता लगाना में अधिक उपयोगी है, लेकिन यह भी बदल सकते हैं आपके कार्यक्रम के अर्थशास्त्र (यदि आपका कार्यक्रम आलस्य पर निर्भर करता है)।
उपयोग :list
और :show context
जाँच करने के लिए breakpoints स्थापित करने के लिए
जाँच करने के लिए आप एक अनंत लूप डिबग करने के लिए कोशिश कर रहे हैं, यह भी
:set -fbreak-on-error
:trace myLoopingFunc x y
उपयोग करने के लिए तो फिर तुम हिट कर सकते हैं मदद करता है लूप के दौरान Ctrl-C
और लूपिंग देखने के लिए :history
का उपयोग करें।
जब आप एक पार्सर चलाने - ParseError मुद्रण दिखाएगा - यह एक 'या तो ParseError A' लौटना चाहिए आप स्रोत स्थिति और किसी भी त्रुटि संदेश। टेक्स्ट एडिटर में अपना नमूना इनपुट होने का शायद यह देखने का सबसे आसान तरीका है कि स्रोत स्थिति कहां से मेल खाती है, हालांकि आप बाकी की इनपुट को कैप्चर करने और अपनी प्रारंभिक सामग्री प्रिंट करने के लिए अपना स्वयं का त्रुटि फेंकने वाला फ़ंक्शन लिख सकते हैं ('getInput' वापस लौटाता है शेष इनपुट)। –