2014-04-22 6 views
7

अपने आवेदन में मैं निम्नलिखित ऑब्जेक्टिव-सी कोड है:एलएलवीएम पाश अनुकूलन बग?

-(void)layoutPages 
{ 
    NSMutableArray* sections = [NSMutableArray array]; 
    [sections addObject:[[NSAttributedString alloc] initWithString:@"Hello world"]]; 

    for (NSAttributedString* contentSection in sections) { 
     NSLog(@"%@",contentSection); 
    } 
} 

enter image description here

कंसोल आउटपुट: 2014-04-22 14:11:01.505 MyApp[24784:830b] Hello world{}

अगर मैं -Os अनुकूलन का उपयोग कर x86_64 आर्किटेक्चर के लिए संकलन, LLVM तो चुपचाप बाहर का अनुकूलन लूप वैरिएबल 'कंटेंटसेक्शन'। जब मैं -O0 का उपयोग करता हूं, तो बग गायब हो जाता है।

(lldb) po contentSection 
error: Couldn't materialize struct: the variable 'contentSection' has no location, it may have been optimized out 
Errored out in Execute, couldn't PrepareToExecuteJITExpression 

यह कैसे संभव है: यह आउटपुट जब मैं contentSection चर का वर्णन प्रिंट करने का प्रयास है? मेरे दृष्टिकोण से लूप के अंदर उपयोग किए जाने पर एक लूप वैरिएबल को अनुकूलित नहीं किया जाना चाहिए। मैंने देखा है कि अन्य लोगों के पास एलएलवीएम के साथ एक समान समस्या है लेकिन लूप वैरिएबल के साथ नहीं। क्या यह एक कंपाइलर बग हो सकता है?

+0

क्या आपने एक ivar –

+0

के बजाय एक संपत्ति self.contentSections का उपयोग करने का प्रयास किया था धन्यवाद @ पीटर Lapisu मैंने इसे एक ही परिणाम के साथ करने की कोशिश की। – Sbhklr

+0

आपने 'iVar' या' @ property' कैसे घोषित किया है? जैसा भी हो रहा है, यह है कि 'vO' और '_contentSctions 'के साथ मेमोरी प्रबंधन हो रहा है और अधिक विचलित हो रहा है। – Rich

उत्तर

3

यह शायद एक संकलक सेटिंग्स समस्या है। सबसे पहले आप यह जांचना चाहेंगे कि आपकी रन स्कीम रिलीज मोड में नहीं है। "योजना संपादित करें ..." पर जाएं -> "चलाएं" -> "जानकारी" -> "कॉन्फ़िगरेशन बनाएं"। सुनिश्चित करें कि मान "डीबग" पर सेट है।

यदि यह समस्या नहीं है, तो सुनिश्चित करें कि आपकी डीबग बिल्ड सेटिंग्स में कंपाइलर ऑप्टिमाइज़ेशन चालू नहीं है। सुनिश्चित करें कि "ऑप्टिमाइज़ेशन लेवल" डीबग के लिए "none" पर सेट है। यह भी सुनिश्चित करें कि कोई अन्य स्थान नहीं है जहां संकलक अनुकूलन स्तर सेट हो सकते हैं, जैसे "अन्य सी ध्वज" सेटिंग में।