Tôi đang sử dụng perf record -g
trên x86-64 Linux để cấu hình một chương trình. Một số biểu tượng trong libc hoặc libstdc ++ có 0
dạng cha mẹ: __GI___strcmp_ssse3
(libc) và strcmp@plt
(libstdc ++) chẳng hạn. (Tôi thực sự có thể phá vỡ các biểu tượng này trong trình gỡ lỗi và nhận được một backtrace.)
Tôi muốn biết những người gọi chính của các chức năng này là gì và tại sao chúng không được ghi lại. Đây có phải là vì libc và libstdc ++ không có con trỏ khung trên x86_64? Và, thực tế hơn, có một số cách xung quanh này?
perf record --call-graph dwarf
giải quyết vấn đề này cho tôi thật không may, có vẻ như perf có vấn đề khi hiển thị biểu đồ cuộc gọi dựa trên người gọi (tức là "đảo ngược") khi sử dụng thông tin lùn. Đó là lý do tại sao tôi bắt đầu sử dụng FlameGraph để trực quan hóa.