2015-07-15 4 views
9

के साथ बाहर अनुकूलित जब मैं -Og विकल्प मैं चर <optimized out> हैं का उपयोग कर g++ के साथ मेरी सी ++ प्रोग्राम संकलन, और यह भी वर्तमान पंक्ति कभी कभी आसपास छोड़ देता है। क्या यह व्यवहार इस अनुकूलन स्तर पर अपेक्षित है, या क्या मुझे कुछ समस्या है? जीसीसी का मैन पेज कहता है:चर जी ++ और -Og विकल्प

-Og

डिबगिंग अनुभव अनुकूलित करें। -Og उन अनुकूलन को सक्षम बनाता है जो डिबगिंग में हस्तक्षेप नहीं करते हैं। यह मानक संपादन-संकलन-डीबग चक्र के लिए अनुकूलन स्तर होना चाहिए, जो तेजी से संकलन और एक अच्छा डिबगिंग अनुभव बनाए रखते हुए अनुकूलन का उचित स्तर प्रदान करता है।

इसलिए मुझे इस व्यवहार की उम्मीद नहीं थी। मेरे सिस्टम पर मेरे पास g ++ संस्करण 4.9.2 और gdb संस्करण 7.7.1 है।

+0

"... एक * उचित * अनुकूलन के स्तर की पेशकश ..." –

+1

संकलक को तब तक ऑप्टिमाइज़ करने की अनुमति है जब तक * as-if * नियम का पालन किया जाता है। इसमें चर (या स्थिरांक में रूपांतरण) को हटाने, साथ ही अप्रयुक्त कार्यों को छोड़ना शामिल हो सकता है। –

+0

मैं देखता हूं। मेरी मुख्य समस्या यह है कि वर्तमान रेखा एक तरफ से अलग-अलग कार्यों में और बाहर और बाहर निकलती है, जिसकी मुझे अपेक्षा नहीं है/समझ में आता है। तो '-O0' विकल्प का उपयोग करने के लिए, मेरे लिए यह सबसे अच्छा होगा? या क्या व्यवहार की भावना बनाने और 'ओओजी' के साथ छड़ी का एक अच्छा तरीका है? – Svaberg

उत्तर

0

-Og विकल्प के साथ संकलित करते समय यह सामान्य व्यवहार है। इस अनुकूलन स्तर पर संकलक को तब तक ऑप्टिमाइज़ करने की अनुमति है जब तक यह as-if rule का पालन करता है। इसमें चर (या स्थिरांक में रूपांतरण) को हटाने, साथ ही अप्रयुक्त कार्यों को छोड़ना शामिल हो सकता है।

सिफारिश या तो छोड़ने के लिए या -O0 विकल्प के साथ संकलित करने के लिए उपयोग किया जाता है।

+1

यह व्यवहार दस्तावेज में दावा के प्रत्यक्ष विरोधाभास में लगता है कि '-Og 'ऑप्टिमाइज़ेशन सक्षम करता है जो डिबगिंग में हस्तक्षेप नहीं करता है "। चर के मानों को देखना डीबगिंग का एक सुंदर घटक है। – BeeOnRope

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