से जुड़ी साझा लाइब्रेरी में फ़ंक्शंस के लिए कॉल ग्राफ़ कैसे उत्पन्न करें, मैं लिनक्स पर्यावरण पर काम कर रहा हूं। मेरे पास दो 'सी' स्रोत पैकेज ट्रेन और test_train है।gprof: मुख्य प्रोग्राम
- ट्रेन पैकेज जब संकलित libtrain.so
- test_train लिंक उत्पन्न करता है libtrain.so करने और निष्पादन योग्य ट्रेन परीक्षण उत्पन्न
अब मैं gprof जिनमें से बुला क्रम दर्शाती का उपयोग करके कॉल ग्राफ उत्पन्न करना चाहते हैं मुख्य कार्यक्रम के साथ-साथ libtrain.so
मैं दोनों पैकेजों को संकलित और लिंक कर रहा हूं -जीपी विकल्प और डीबगिंग स्तर o0 है। मैं करता हूं ./train-test, gmon.out उत्पन्न होता है। तब मैं कार्य करें:
$ gprof -q ./train-test gmon.out
यहाँ, उत्पादन से पता चलता है ट्रेन की परीक्षा में कार्यों का ग्राफ फोन लेकिन libtrain.so
क्या समस्या हो सकती है में नहीं है?
यह ध्यान देने योग्य है कि अक्सर आप काम कर सकते हैं कि लाइब्रेरी का नाम क्या है जो आपकी बाइनरी लोड करने की कोशिश कर रहा है (mylib.so बनाम mylib.so.1 बनाम mylib.so.1.1 आदि) एप्लिकेशन पर 'ldd' चलाकर) । यदि प्रत्यक्ष डायलोपेन कॉल के माध्यम से लाइब्रेरी खोला जा रहा है तो इसमें केवल एक प्रविष्टि नहीं होनी चाहिए। –
बहुत खराब स्प्राफ बहुत बुरी तरह दुर्घटनाग्रस्त हो जाता है, जैसा कि [इस सवाल] में है (http://stackoverflow.com/questions/6216979/what-is-causing-sprof-to-complain-about-inconsistency-detected-by-ld-so) –
क्या होगा अगर मेरी परियोजना के लिए चुने गए संकलक, मिनीजीडब्ल्यू के साथ स्पॉफ नहीं आती है? – Charles