Daniel Mustieles
daniel.musiteles@gmail.com 2018, 2019

# ¿Qué es la pila?

# ¿Qué significa «en el archivo de pila»?

Esto significa que sysprof cree que se ha llamado a una función desde alguna parte de la pila del programa (donde `malloc` reserva memoria) en lugar de desde la sección del código (donde normalmente está el código ejecutable). Hay varias explicaciones posibles para esto.

# Compiladores JIT (Just in time)

Los lenguajes como Java pueden generar código ejecutable mientras se ejecuta un programa y guardarlo en la pila. Sysprof informa de manera precisa de la situación en este caso.

# Optimizar compiladores

Los compiladores de C y C++ pueden optimizar la información necesaria para determinado quién ha llamado a una función, lo que es incorrecto para la pila. Todavía puede saber con qué frecuencia el programa llama a cada función, pero no siempre desde aquí.

En gcc, la opción `-fno-omit-frame-pointer` evitará esta optimización. La opción no se necesita siempre. Por ejemplo, en máquinas x86_64 machines sólo se necesita con optimización -O3.

Para obtener un árbol de llamadas más detallado y preciso de un código no optimizado, use las opciones: `-ggdb -fno-omit-frame-pointer -O0`