2012-10-16 14 views
11

में बार संकलन मेरी स्काला/एसबीटी परियोजना में, मैं एक फ़ाइल है कि संकलित करने के लिए 5 (!) मिनट तक लगते है। अन्य सभी कुछ सेकंड में संकलित कर सकते हैं। यह विकास को बहुत दर्दनाक बनाता है।डीबग लंबे स्काला और एसबीटी

मुझे यकीन है कि मैं कुछ कोस रहा हूँ स्काला निर्माण करती हूँ, लेकिन मैं पता नहीं यह डिबगिंग के बारे में जाने के लिए कैसे कर सकते है। स्कैला में लंबे संकलन के समय कैसे डिबग करते हैं?

मैं स्काला 2.9.2 और एसबीटी 0.11.2 उपयोग कर रहा हूँ

+2

लांग संकलन बार कई कारणों से हो सकता है। कोड पोस्ट किए बिना, मुझे संदेह है कि आपको बहुत मदद मिलेगी। एक पहला कदम फ़ाइल को कई में विभाजित करना और यह देखने के लिए कि कौन से हिस्सों को संकलित करने में सबसे लंबा समय लगता है। यह _re_compilation के समय में भी मदद करता है। –

+1

मैं बहुत सारे कोड को दोबारा बिना फाइल को तोड़ सकता हूं, क्योंकि इसमें केवल एक वर्ग है। मुझे यह देखने में अधिक दिलचस्पी है कि क्या कुछ ध्वज है जो मैं कंपाइलर में चालू कर सकता हूं जो मुझे समस्या के बारे में और संकेत दे सकता है। – Eyal

+1

पर्याप्त मेला, लेकिन आप शेष कोड को छूए बिना कक्षा को गुणों में विभाजित कर सकते हैं। –

उत्तर

10

आप निम्न स्काला संकलक विकल्पों की कोशिश कर सकते हैं:

  • -Ystatistics प्रिंट संकलक आँकड़े

एक चरण का पता लगाएं कि सबसे अधिक समय लगता है। बाहर कार्यक्रम के बाद "सभी"

  • -Yshow-trees दिखाएँ विस्तृत पेड़ जब प्रिंट के संबंध में उपयोग

    • -Xprint:<phase> प्रिंट या:
    • -Ydebug आउटपुट डिबगिंग संदेशों
    • -Ypmat-debug ट्रेस सभी पैटर्न चरण फिर, उन की कोशिश matcher गतिविधि।

    एसबीटी कंसोल से सीधे इन सेटिंग को सक्षम करने के लिए, आप set scalacOptions in ThisBuild += "-Ystatistics", या एक से अधिक के लिए उपयोग कर सकते हैं, set scalacOptions in ThisBuild ++= Seq("-Yshow-trees", "-Ydebug)