Úr Balázs
ur dot balazs at fsf dot hu 2023.

# Mit jelent a kupac?

# Mit jelent a „Fájlban [kupac]”?

Ez azt jelenti, hogy a sysprof azt hiszi, hogy egy függvényt valahonnan a program kupacából hívtak meg (ahol a `malloc` memóriát foglal le), nem pedig a kódszakaszból (ahol a futtatható kód általában található). Több lehetséges magyarázat is van.

# JIT (Just in Time – magyarul: épp időben) fordítók

Az olyan nyelvek, mint a Java, képesek végrehajtható kódot előállítani a program futása közben, és azt a kupacban tárolni. A Sysprof ebben az esetben pontosan jelenti a helyzetet.

# Fordítók optimalizálása

A C és C++ fordítók képesek optimalizálni a függvény hívójának meghatározásához szükséges információkat, ezért tévesen [kupac] lesz feltételezve. Továbbra is meg lehet mondani, hogy az egyes függvényeket milyen gyakran hívja a program, de azt már nem mindig, hogy honnan.

A gcc esetén a `-fno-omit-frame-pointer` jelző megakadályozza ezt az optimalizálást. A jelző nem mindig szükséges, például x86_64 gépeken csak az -O3 optimalizálással van rá szükség.

Ahhoz, hogy a legrészletesebb és legpontosabb hívásfát kapja a nem optimalizált kódból, használja ezeket a jelzőket: `-ggdb -fno-omit-frame-pointer -O0`