2013-12-10 4 views
10

मैं एक बिग सी ++ प्रोजेक्ट में काम कर रहा हूं, जिसका आकार 300 एमबी और 800 से अधिक फाइलों का विशाल स्रोत है। बाइनरी क्रैश होने पर मैं कॉल स्टैक प्राप्त करना चाहता हूं, इसलिए मैंने सिग्नल पर कब्जा कर लिया है और बैकट्रैक_सिंबबल्स से कॉल स्टैक को एक फ़ाइल में लिखा है। लेकिन backtrace_symbols से प्रतीक नाम प्राप्त करने के लिए, मैंने लिंकर ध्वज '-गतिशील' के साथ संकलित किया है। मैं जानना चाहता हूं कि, 'गतिशील' का उपयोग किसी भी समस्या को प्रभावित करता है ..?गतिशील जीसीसी विकल्प के प्रभाव/नुकसान

मैं जानता हूँ कि यह प्रदर्शन प्रभावित करता है, Will adding the -rdynamic linker option to gcc/g++ impact performance?

लेकिन यह काफी प्रदर्शन को प्रभावित करता है ..?

क्या यह मेरा स्रोत कोड दिखाता है ..? [मुझे पता है कि यह नहीं होगा, मैं बस सुनिश्चित करना चाहता हूं]

क्या यह कुल रनटाइम प्रदर्शन या स्टार्टअप समय को प्रभावित करता है ..?

'गतिशील' के नुकसान क्या हैं ..?

उत्तर

11

प्रश्न: लेकिन क्या यह प्रदर्शन को काफी प्रभावित करता है ..?

ए: मैंने इसे किसी भी बड़े प्रोजेक्ट w/o पर किसी भी गिरावट पर उपयोग किया है।

प्रश्न: क्या यह मेरा स्रोत कोड दिखाता है ..?

ए: नहीं, यह सिर्फ फ़ंक्शन नामों का खुलासा करता है।

प्रश्न: क्या यह कुल रनटाइम प्रदर्शन या स्टार्टअप समय को प्रभावित करता है ..?

ए: मेरे अनुभव में, नहीं। अधिकांश कार्यों को पहले से ही निर्यात कर रहे हैं। आमतौर पर यह स्थिर कार्यों को जोड़ता है।

प्रश्न: 'गतिशील' के नुकसान क्या हैं ..?

ए: गतिशीलता का उपयोग dlopen() के साथ किया जा सकता है ताकि निष्पादन योग्य के लिए साझा/वैश्विक प्रतीक तालिका हो जो मेरे प्रोजेक्ट में आवश्यक हो (गतिशील_कास्ट <> एसओ सीमाओं में काम करेगा)। डाउनसाइड एसओएस के बीच फ़ंक्शन नाम टकराव है।

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