पर Google Perftools CPU प्रोफाइलर में लाइन नंबर मैकोज़क्स पर कुछ सी ++ प्रोग्राम प्रोफाइल करने का प्रयास कर रहा हूं। इसलिए मैंने google-perftools
बनाया, मैकपॉर्ट्स जी ++ 4.7 का उपयोग करके संकलित एक प्रोग्राम लिखा, -g
कंपाइलर ध्वज के साथ, और libprofiler
से जुड़ा हुआ है। तब मैं भाग गया:मैकोज़क्स
CPUPROFILE=cpu.profile ./a.out
तब मैं उत्पादन उत्पन्न करने के लिए pprof भाग गया:
[hidden ~]$ pprof --text ./a.out cpu.profile
Using local file ./a.out.
Using local file cpu.profile.
Removing __sigtramp from all stack traces.
Total: 282 samples
107 37.9% 37.9% 107 37.9% 0x000000010d72229e
16 5.7% 43.6% 16 5.7% 0x000000010d721a5f
12 4.3% 47.9% 12 4.3% 0x000000010d721de8
11 3.9% 51.8% 11 3.9% 0x000000010d721a4e
9 3.2% 55.0% 9 3.2% 0x000000010d721e13
8 2.8% 57.8% 8 2.8% 0x000000010d721a64
7 2.5% 60.3% 7 2.5% 0x000000010d7222f0
6 2.1% 62.4% 6 2.1% 0x000000010d721a4c
6 2.1% 64.5% 6 2.1% 0x000000010d721b1f
6 2.1% 66.7% 6 2.1% 0x000000010d721e0c
5 1.8% 68.4% 5 1.8% 0x000000010d721fba
......
ऐसा लगता है कि perftools नाम से कार्य करने के पते नहीं करेंगे।
क्या कोई जानता है कि मैं यहां क्या खो रहा हूं? प्रोफाइलर को सही परिणाम उत्पन्न करने के लिए मुझे क्या करना चाहिए।
संपादित करें: अधिक जानकारी: यह पीप्रोफ या google-perftools की समस्या नहीं है, लेकिन जीसीसी या मैकोक्स की तरह कुछ और है, क्योंकि Instrument.app लाइन संख्याओं के बजाय पते भी दिखाता है। मैक ओएस एक्स के तहत डीबग प्रतीक कैसे काम करते हैं, इस बारे में मैं परिचित नहीं हूं, इसलिए मैं इसे जीसीसी या मैक ओएस एक्स में बग होने की बजाय यहां कुछ याद कर रहा हूं। मुझे आश्चर्य है कि कोई भी डिबग जानकारी कैसे काम करता है इस पर कुछ संकेत प्रदान कर सकता है मैक ओएस एक्स
"मैं कुछ सी ++ प्रोग्राम प्रोफाइल की कोशिश कर रहा हूं" तो आप इस प्रश्न को सी के रूप में क्यों टैग करते हैं? –
यह समस्या सी ++ के लिए विशिष्ट नहीं है, लेकिन सी –
पर भी मैं ओएस एक्स देव और न ही googleperf से परिचित नहीं हूं, लेकिन मैंने पहले libs प्रोफाइलिंग का उपयोग किया है, और साथ ही साथ डीबगिंग के लिए ध्वज झंडा भी किया है, हमें प्रोफ़ाइल विवरण प्राप्त करने के लिए कंपाइलर और लिंकर को -पी ध्वज जोड़ें .. – fduff