<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" type="topic" id="faq" xml:lang="es">
<info>
<link type="guide" xref="index#faq"/>
<mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
<mal:name>Daniel Mustieles</mal:name>
<mal:email>[email protected]</mal:email>
<mal:years>2018, 2019</mal:years>
</mal:credit>
</info>
<title>¿Qué es la pila?</title>
<section id="what-does-heap-mean">
<title>¿Qué significa «en el archivo de pila»?</title>
<p>Esto significa que sysprof cree que se ha llamado a una función desde alguna parte de la pila del programa (donde <code>malloc</code> 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.</p>
</section>
<section id="jit">
<title>Compiladores JIT (Just in time)</title>
<p>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.</p>
</section>
<section id="optimizing">
<title>Optimizar compiladores</title>
<p>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í.</p>
<note>
<p>En gcc, la opción <code>-fno-omit-frame-pointer</code> 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.</p>
</note>
<note>
<p>Para obtener un árbol de llamadas más detallado y preciso de un código no optimizado, use las opciones: <code>-ggdb -fno-omit-frame-pointer -O0</code></p>
</note>
</section>
</page>