2011-06-02 7 views
14

मैं कुछ सॉफ़्टवेयर (ossim) प्रोफ़ाइल के लिए sprof का उपयोग करने का प्रयास कर रहा हूं, जहां लगभग सभी कोड साझा लाइब्रेरी में हैं। मैं एक रूपरेखा फ़ाइल उत्पन्न किया है, लेकिन जब मैं sprof चलाने के लिए, मैं निम्नलिखित त्रुटि मिलती है:"ld.so द्वारा खोजी गई असंगतता" के बारे में शिकायत करने के लिए स्पॉफ का कारण क्या है?

> sprof /home/eca7215/usr/lib/libossim.so.1 libossim.so.1.profile -p > log 
Inconsistency detected by ld.so: dl-open.c: 612: _dl_open: Assertion `_dl_debug_initialize (0, args.nsid)->r_state == RT_CONSISTENT' failed! 

निर्देश मैं निम्नलिखित कहा गया था कि मैं libc संस्करण में कम से कम 2.5-34 की जरूरत है, मैं libc संस्करण 2.12 है। 2 (जेनेटू, कर्नेल 2.6.36-आर 5)।

मुझे त्रुटि का अर्थ या (अधिक दिलचस्प रूप से) इसे ठीक करने के तरीके के बारे में कोई स्पष्टीकरण नहीं मिल रहा है, केवल अर्ध-प्रासंगिक Google परिणाम स्काइप के पुराने संस्करण में एक बग के लिए हैं।

+2

जहां तक ​​मैं कह सकता हूं, यह ग्लिब में एक बग है, यह दिखाता है कि क्या आप RT_CONSISTENT को Google करते हैं और सभी redhat bugzilla प्रविष्टियों को देखते हैं। मैं इसके बजाय oprofile का उपयोग कर रहा हूँ। – MattSmith

+0

डुनो अगर यह काम करता है, लेकिन इस जानकारी में एसओएस फाइलों के लिए स्पॉफ उपयोग के बारे में कुछ जानकारी है: http://stackoverflow.com/questions/1838989/gprof-how-to-generate-call-graph-for-functions- इन-साझा-लाइब्रेरी-वह-है-लिंक –

उत्तर

5

मुझे थोड़ी उत्सुकता मिली क्योंकि यह अभी भी OpenSuse 12.x में टूट गया है। मैंने सोचा होगा कि मूल रूप से '0 9 में रिपोर्ट की गई बग या तो अब तक तय की गई होगी। मुझे लगता है कि कोई भी वास्तव में sprof का उपयोग करता है। (या शायद डीएल-ओपन इतना नाजुक है कि लोग इसे छूने के लिए डरते हैं :-)

समस्या __RTLD_SPROF ध्वज को उछालती है जो डलोपेन के लिए तर्क के रूप में उपयोग की जाती है। कोई भी सरल प्रोग्राम लें जो डलोपेन को कॉल करता है, या वह ध्वज दूसरे तर्क पर है और आपको एक ही असफल दावा मिलता है। मैं, एक उदाहरण

handle = dlopen(argv[1], RTLD_LAZY | __RTLD_SPROF); 

मैं क्या डीएल-open.c का शीघ्रता से अवलोकन से बता सकते हैं के रूप में http://linux.die.net/man/3/dlopen के तल पर नमूना प्रोग्राम का उपयोग किया इस झंडे शॉर्ट सर्किट dl_open क्या करता हैं। इसलिए दावा में निर्दिष्ट r_flag RT_CONSISTENT पर सेट नहीं होता है।

+1

यह बहुत परेशान है। बहुत से लोग इसके बजाय oprofile का सुझाव देते हैं, लेकिन अब तक मैं इसे बनाने में सक्षम नहीं था। क्या आपके पास साझा लाइब्रेरी को प्रोफाइल करने के बारे में कोई सुझाव है? – dirac3000

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

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