Шта значи гомила (heap)?
Шта значи „У датотеци [гомила]“?
Ово значи да Профилатор система верује да је функција позвана однекуд из гомиле програма (где malloc додељује меморију), а не из одељка кода (где извршни код обично борави). Постоји неколико могућих објашњења.
JIT (Just in Time) компајлери
Језици попут Јаве могу да генеришу извршни код док је програм покренут и да га сместе у гомилу. Профилатор система у овом случају тачно извештава о ситуацији.
Оптимизујући компајлери
Ц и Ц++ компајлери могу оптимизацијом да уклоне податке потребне за одређивање позиваоца функције, па се он погрешно препознаје као [гомила]. И даље можете рећи колико често програм позива сваку функцију, али не увек и одакле.
За гцц, опција -fno-omit-frame-pointer ће спречити ову оптимизацију. Опција није увек потребна, на пример на x86_64 машинама потребна је само уз -O3 оптимизацију.
Да бисте добили најдетаљније и најтачније стабло позива из неоптимизованог кода, користите ове опције: -ggdb -fno-omit-frame-pointer -O0