我正在分析使用linux perf的C++應用程序,並且我使用GProf2dot獲得了一個很好的控制流圖。但是,C庫(libc6-2.13.so)中的一些符號佔用了總時間的大部分時間,但沒有內部邊緣。如何使用linux perf獲取libc6符號的呼叫父母(例如_int_malloc)?
例如:
_int_malloc
花費的時間爲8%,但沒有通話的父母。__strcmp_sse42
和__cxxabiv1::__si_class_type_info::__do_dyncast
一起走的時候大約10%,並有來電者的名字是0
,其中有來電2d6935c
,2cc748c
和6
,它們沒有來電。
因此,我找不到哪些例程負責所有這些使用perf的mallocing和dynamic casting。然而,看起來其他符號(例如malloc
但不是_int_malloc
)確實有呼叫父母。
爲什麼不顯示呼叫父母_int_malloc?爲什麼我找不到__do_dyn_cast的最終來電者?而且,有沒有辦法讓我修改我的設置,以便我可以獲取這些信息?我在x86-64上,所以我想知道是否需要帶幀指針的(非標準)libc6。
對MCMC +1,歡迎來到SO。 – 2012-04-20 17:09:37