MacOSX'te bazı C++ programlarını profillemeye çalışıyorum. Bu yüzden google-perftools
'u yazdım, MacPorts g ++ 4.7 kullanarak -g
derleyici bayrağını kullanarak derlenmiş ve libprofiler
'a bağlı bir program yazdım. Sonra koştum: Google Perftools'taki işlemci numarası MacOSX'te işlemci uzmanı
CPUPROFILE=cpu.profile ./a.out
Sonra çıkış oluşturmak için pprof ran:
perftools isimleri işlev adreslerini dönüştürmeyin gibi görünüyor
[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
......
.
Burada nelerin eksik olduğumu bilen var mı? Profilcinin doğru sonucu vermesini sağlamak için ne yapmalıyım?
DÜZENLEME: Daha fazla bilgi: pprof veya google-perftools'un bir sorunu değil, gcc veya macosx gibi bir şeydir, çünkü Instrument.app da satır numaraları yerine adresleri gösterir. Hata ayıklama sembollerinin Mac OS X altında nasıl çalıştığını bilmiyorum. Bu yüzden, gcc veya Mac OS X'de hata yapmak yerine, burada eksik bir şey olarak düşünmeyi tercih ederim. Hata ayıklama bilgilerinin nasıl çalıştığına dair herhangi bir ipucu sunup sunamayacağını merak ediyorum. Mac OS X için
"Bazı C++ programlarını deniyorum" Neden bu soruyu neden C olarak etiketliyorsunuz? –
Bu sorun C++ için değil, aynı zamanda C'ye özgü değildir. –
OS X dev ya da googleperf ile aşina değilim, ancak daha önce libing'i kullanıyorum ve hata ayıklama için -g bayrağı kullanmalıydık. -P bayrağı, profil detaylarını almak için derleyiciye ve bağlayıcıya ekleyin .. – fduff