Kva tyder heap?

Kva tyder «I fil [heap]»?

Dette tyder at sysprof trur ein funksjon vart kalla frå ein stad i programmet sitt heap (der malloc tildeler minne) heller enn frå kode-delen (der køyrbar kode vanlegvis ligg.) Det finst fleire moglege forklaringar.

JIT-kompilatorar (Just in Time)

Språk som Java kan lage køyrbar kode medan eit program køyrer og lagre han i heapen. Sysprof rapporterer situasjonen korrekt i dette tilfellet.

Kompilatorar som optimaliserer

C- og C++-kompilatorar kan optimalisere bort informasjon som trengst for å avgjere kven som kallar ein funksjon, slik at han vert feilaktig tolka som [heap]. Du kan framleis sjå kor ofte kvar funksjon vert kalla av programmet, men ikkje alltid frå kvar.

For gcc vil flagget -fno-omit-frame-pointer hindre denne optimaliseringa. Flagget er ikkje alltid nødvendig, til dømes på x86_64-maskinar er det berre nødvendig med -O3-optimalisering.

For å få det mest detaljerte og nøyaktige kall-treet frå uoptimalisert kode, bruk desse flagga: -ggdb -fno-omit-frame-pointer -O0