2011-04-11 17 views
8

के माध्यम से एलएलवीएम अनुकूलन को अक्षम करने में समस्या मेरे पास कोड का एक हिस्सा है जो क्रैश हो जाता है जब तक कि मैं अनुकूलन के साथ निर्माण नहीं करता। मैं एलएलवीएम कंपाइलर 2.0समस्या

के साथ निर्माण कर रहा हूं, मैं #pragma संकलक निर्देश के साथ अपमानजनक कोड को लपेटकर अनुकूलन बंद करना चाहता हूं; या एक पूरी फ़ाइल के लिए अनुकूलन बंद करें।

मैं क्लैंग मैनुअल और कोड में खुदाई कर रहा हूं; लेकिन मुझ पर कुछ भी नहीं निकलता है।

क्या कोई जानता है कि एक सीयू के लिए अनुकूलन कैसे बदलें (पूरे ऐप के विपरीत)?

+0

मुझे पता है कि यह इसे ठीक नहीं करेगा, लेकिन आपको एलएलवीएम टीम को कोड नमूना के साथ ईमेल करना चाहिए जो अनुकूलित होने पर क्रैश हो। यह निश्चित रूप से एलएलवीएम में एक बग है। – yan

+0

एआरएमवी 6 उपकरणों पर क्रैश हो रहा है? यदि ऐसा है, तो यह संभवतः एक्सकोड 4 के भीतर एलएलवीएम 2.0 में इस ज्ञात बग से संबंधित है: http://stackoverflow.com/questions/5490432/building-with-llvm-and-any-optimization-causes-app-to-crash-on स्टार्टअप –

+0

यह हो सकता है। ऐप चलता है, लेकिन एएसआई-HTTP-REQUEST में पहला कॉल वर्णित स्टैक को दूषित करता है। हमारे लिए, यह मुद्दा आईपॉड टच 2 जी पर आईओएस 4.2.1 चलाने पर ही होता है। मैं उपकरण को दोष देने के लिए तैयार नहीं था; लेकिन आपत्तिजनक कोड पर सम्मान करने में परेशानी हो रही है। – Dave

उत्तर

15

आप एक्सकोड में प्रति-फ़ाइल कंपाइलर झंडे सेट कर सकते हैं। एक्सकोड 4 में (जो मुझे लगता है कि आप एलएलवीएम 2.0 संदर्भ के कारण उपयोग कर रहे हैं), पहले बाएं हाथ के प्रोजेक्ट ब्राउज़र में प्रोजेक्ट का चयन करें। बिल्ड चरण टैब पर जाएं और संकलन स्रोत बिल्ड चरण का विस्तार करें।

वहाँ में, आप प्रति-फ़ाइल संकलक झंडे सेट कर सकते हैं, तो आप हमलावर फाइल करने के लिए जा रहा है और एक ध्वज के रूप में -O0 में दर्ज करने का प्रयास और सिर्फ उस फ़ाइल के लिए अनुकूलन को निष्क्रिय करने की कोशिश कर सकते।

जीसीसी में कुछ विशेषताएं हैं जिन्हें आप सेट कर सकते हैं, जैसा कि his answer here में जोहान्स द्वारा इंगित किया गया है, लेकिन ये शायद एलएलवीएम में नहीं हो सकते हैं। इसके अलावा, वहां टिप्पणियों से, ऐसा लगता है कि ये आईओएस अनुप्रयोगों के निर्माण के लिए इस्तेमाल किए गए ऐप्पल के अनुकूलित जीसीसी में भी नहीं हैं।

+0

धन्यवाद ब्रैड, यह चाल है! मैंने "कंपाइलर झंडे" कॉलम को बहुत स्नीकी नहीं देखा। पीएस: मैंने आपके courseware का आनंद लिया है। – Dave

+0

@ डेव - हाँ, मुझे एक्सकोड 3 से माइग्रेट करने के बाद मुझे कुछ समय लगा, क्योंकि उस संस्करण ने प्रत्येक .m फ़ाइल के लिए इंस्पेक्टर के माध्यम से इसे संभाला था। यह सुनकर अच्छा लगा कि कक्षा सत्र में आप अपने घंटों के घंटों तक अपने दिमाग से ऊब नहीं रहे हैं। –

+0

धन्यवाद! यह एक्सकोड 4.3.1 (आईओएस 5.1 के लिए) में एलएलवीएम कंपाइलर 3.1 के साथ भी काम करता है। – Leehro