Tôi đang lược tả một ứng dụng C++ sử dụng tính năng hoàn thiện của Linux và tôi đang nhận được biểu đồ luồng kiểm soát tốt đẹp bằng cách sử dụng GProf2dot. Tuy nhiên, một số biểu tượng từ thư viện C (libc6-2.13.so) chiếm một phần đáng kể trong tổng thời gian, nhưng không có trong cạnh.Làm cách nào để nhận được cha mẹ gọi cho các ký hiệu libc6 (ví dụ: _int_malloc) với tính năng hoàn thiện của linux?
Ví dụ:
_int_malloc
mất 8% thời gian nhưng không có cha mẹ gọi.__strcmp_sse42
và__cxxabiv1::__si_class_type_info::__do_dyncast
cùng mất khoảng 10% thời gian, và có một người gọi tên là0
, trong đó có người gọi2d6935c
,2cc748c
, và6
, mà không có người gọi.
Kết quả là, tôi không thể tìm ra thói quen nào chịu trách nhiệm cho tất cả tính năng truyền động mạnh mẽ và năng động này chỉ bằng cách sử dụng tính năng hoàn hảo. Tuy nhiên, có vẻ như các ký hiệu khác (ví dụ: malloc
nhưng không phải là _int_malloc
) không có cha mẹ gọi.
Tại sao perf không hiển thị cha mẹ gọi cho _int_malloc? Tại sao tôi không thể tìm thấy người gọi cuối cùng của __do_dyn_cast? Và, có cách nào để tôi sửa đổi thiết lập của mình để tôi có thể nhận được thông tin này không? Tôi đang trên x86-64, vì vậy tôi tự hỏi nếu tôi cần một libc6 (không chuẩn) với các con trỏ khung.
+1 cho MCMC và chào mừng bạn đến với SO. –