मैं perf record -g
एक प्रोग्राम को प्रोफाइल करने के लिए x86-64 लिनक्स पर उपयोग कर रहा हूं । Libc या libstdc ++ में कई प्रतीकों के 0
माता-पिता के रूप में हैं: __GI___strcmp_ssse3
(libc) और strcmp@plt
(libstdc ++) उदाहरण के लिए। (मैं वास्तव में डिबगर में इन प्रतीकों पर टूट सकता हूं और बैकट्रेस प्राप्त कर सकता हूं।)
मुझे यह जानकर अच्छा लगेगा कि इन कार्यों के प्रमुख कॉलर क्या हैं, और उन्हें रिकॉर्ड क्यों नहीं किया गया है। यह इसलिए है क्योंकि libcdc और libstdc ++ में x86_64 पर फ्रेम पॉइंटर्स नहीं हैं? और, अधिक व्यावहारिक रूप से, क्या इसके आसपास कोई रास्ता है?
perf record --call-graph dwarf
मेरे लिए इस समस्या का हल करता है। दुर्भाग्य से, ऐसा लगता है कि पूर्ण को बौने जानकारी का उपयोग करते समय कॉलर-आधारित (अर्थात "उलटा") कॉल-ग्राफ़ दिखाने में समस्याएँ होती हैं। यही कारण है कि मैंने विज़ुअलाइज़ेशन के लिए फ्लेमग्राफ का उपयोग करना शुरू कर दिया।