Saya menggunakan perf record -g
di x86-64 Linux untuk membuat profil suatu program. Beberapa simbol dalam libc atau libstdc ++ memiliki 0
sebagai induk: __GI___strcmp_ssse3
(libc) dan strcmp@plt
(libstdc ++) misalnya. (Saya benar-benar dapat mematahkan simbol-simbol ini di debugger dan mendapatkan backtrace.)
Saya ingin tahu apa penelepon utama dari fungsi-fungsi ini, dan mengapa mereka tidak direkam. Apakah ini karena libc dan libstdc ++ tidak memiliki frame pointer di x86_64? Dan, lebih praktisnya, apakah ada jalan keluarnya?
perf record --call-graph dwarf
Memecahkan masalah ini untuk saya. Sayangnya, tampaknya perf memiliki masalah yang menunjukkan grafik panggilan berbasis penelepon (yaitu "terbalik") ketika menggunakan informasi katai. Itu sebabnya saya mulai menggunakan FlameGraph untuk visualisasi.