Saya menggunakan perf record -gdi x86-64 Linux untuk membuat profil suatu program. Beberapa simbol dalam libc atau libstdc ++ memiliki 0sebagai 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 dwarfMemecahkan 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.