<?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>daniel.musiteles@gmail.com</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>
