Linux 'perf kaydı' libc ve libstdc ++ sembolleri için nasıl çalışır?


12

perf record -gBir programı profillemek için x86-64 Linux kullanıyorum . Libc veya libstdc ++ 'ta birkaç sembolün 0üst öğesi vardır : __GI___strcmp_ssse3(libc) ve strcmp@plt(libstdc ++). (Aslında hata ayıklayıcıdaki bu sembolleri bozabilir ve geri iz alabilirim.)

Bu işlevlerin ana arayanlarının ne olduğunu ve neden kaydedilmediğini bilmek isterim. Bunun nedeni, libc ve libstdc ++ 'ın x86_64 üzerinde kare işaretçileri olmadığı için mi? Ve daha pratik olarak, bunun bir yolu var mı?

Yanıtlar:


5

Bu eski bir soru, ama şimdi ile mümkün --call-graph dwarf. Man sayfasından:

 -g
       Enables call-graph (stack chain/backtrace) recording.

   --call-graph
       Setup and enable call-graph (stack chain/backtrace) recording, implies -g.

           Allows specifying "fp" (frame pointer) or "dwarf"
           (DWARF's CFI - Call Frame Information) as the method to collect
           the information used to show the call graphs.

           In some systems, where binaries are build with gcc
           --fomit-frame-pointer, using the "fp" method will produce bogus
           call graphs, using "dwarf", if available (perf tools linked to
           the libunwind library) should be used instead.

Bunun biraz yeni bir Linux çekirdeği gerektirdiğine inanıyorum (> = 3.9? Tamamen emin değilim). Dağıtımınızın perf paketinin libdw veya libunwind ile bağlantılı olup olmadığını kontrol edebilirsiniz readelf -d $(which perf) | grep -e libdw -e libunwind. Fedora 20'de perf libdw ile bağlantılıdır.


perf record --call-graph dwarfbu sorunu benim için çözer. ne yazık ki, perf cüce bilgileri kullanırken arayan tabanlı (yani "ters çevrilmiş") çağrı grafiklerini gösteren sorunlar var gibi görünüyor. Bu yüzden görselleştirme için FlameGraph kullanmaya başladım.
mavi

cüce gevşemeyi kullanmanın profil oluşturma sırasında çok önemli ek yüke neden olduğunu unutmayın
Azsgy

-2

perfsistem çağrıları için geçen süreyi gösteren bir çekirdek aracıdır. GNU gprof arıyorsunuz msgstr "gprof - çağrı grafiği profil verilerini görüntüle". Gprof kullanmak için kaynaklarınızı -pganahtarla derlemeniz gerekir .

Bunun yanı sıra çok sayıda gelişmiş profil oluşturma aracı var eclipse-cdt-profiling-framework.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.