fbpx
Wikipedia

Stack trace

En informática, un stack trace (también llamado stack backtrace[1]​ o stack traceback[2]​) es un informe de los elementos activos en la pila de ejecución en un momento determinado durante la ejecución de un programa. Cuando se ejecuta un programa, la memoria a menudo se asigna dinámicamente en dos sitios; la pila y el montón. La memoria se asigna continuamente en una pila pero no en un montón. También se denomina pila un elemento en la programación, por lo que para diferenciarla, esta pila se conoce como la pila en tiempo de ejecución del programa. Técnicamente, una vez que se ha asignado un bloque de memoria en la pila, no se lo puede quitar fácilmente, ya que puede haber otros bloques de memoria que se asignaron antes. Cada vez que se llama a una función en un programa, se asigna un bloque de memoria en la parte superior de la pila de tiempo de ejecución llamado registro de activación (o stack pointer). En un nivel alto, un registro de activación asigna memoria para los parámetros de la función y las variables locales declaradas en la función.

Los programadores suelen utilizar el seguimiento de la pila durante el debugging interactivo y post-mortem. Los usuarios finales pueden ver un seguimiento de la pila que se muestra como parte de un mensaje de error, que luego el usuario puede informar a un programador.

Un seguimiento de pila permite rastrear la secuencia de funciones anidadas llamadas, hasta el punto donde se genera el seguimiento de pila. En un escenario post-mortem, esto se extiende hasta la función donde ocurrió la falla (pero no fue necesariamente causada). Las llamadas de hermanos no aparecen en un seguimiento de pila.

Como ejemplo, el siguiente programa de Python contiene un error.

def a():  i = 0  j = b(i)  return j  def b(z):  k = 5  if z == 0:  c()  return k + z  def c():  error()  a() 

La ejecución del programa con el intérprete estándar de Python produce el siguiente mensaje de error.

Traceback (most recent call last): File "tb.py", line 15, in <module> a() File "tb.py", line 3, in a j = b(i) File "tb.py", line 9, in b c() File "tb.py", line 13, in c error() NameError: name 'error' is not defined 

El seguimiento de la pila muestra donde ocurre el error, es decir, en la función c. También muestra que la función c fue llamada por b, que fue llamada por a, que a su vez fue llamada por el código en la línea 15 (La última línea) del programa. Los registros de activación para cada una de estas tres funciones se organizarían en una pila de modo que la función a ocuparía la parte inferior de la pila y la función c ocuparía la parte superior de la pila.

Ayuda de lenguaje

Muchos lenguajes de programación, incluidos Java y C#, tienen soporte integrado para recuperar el seguimiento de la pila actual a través de llamadas al sistema. C++ no tiene soporte incorporado para hacer esto, pero los usuarios de C++ pueden recuperar seguimientos de pila con (por ejemplo) la biblioteca stacktrace. En JavaScript, las excepciones contienen una propiedad de stack que contiene la pila desde el lugar donde se lanzó.

Véase también

Referencias

  1. «libc manual: backtraces». gnu.org. Consultado el 8 July 2014. 
  2. «traceback — Print or retrieve a stack traceback». python.org. Consultado el 8 July 2014. 
  •   Datos: Q1554400

stack, trace, informática, stack, trace, también, llamado, stack, backtrace, stack, traceback, informe, elementos, activos, pila, ejecución, momento, determinado, durante, ejecución, programa, cuando, ejecuta, programa, memoria, menudo, asigna, dinámicamente, . En informatica un stack trace tambien llamado stack backtrace 1 o stack traceback 2 es un informe de los elementos activos en la pila de ejecucion en un momento determinado durante la ejecucion de un programa Cuando se ejecuta un programa la memoria a menudo se asigna dinamicamente en dos sitios la pila y el monton La memoria se asigna continuamente en una pila pero no en un monton Tambien se denomina pila un elemento en la programacion por lo que para diferenciarla esta pila se conoce como la pila en tiempo de ejecucion del programa Tecnicamente una vez que se ha asignado un bloque de memoria en la pila no se lo puede quitar facilmente ya que puede haber otros bloques de memoria que se asignaron antes Cada vez que se llama a una funcion en un programa se asigna un bloque de memoria en la parte superior de la pila de tiempo de ejecucion llamado registro de activacion o stack pointer En un nivel alto un registro de activacion asigna memoria para los parametros de la funcion y las variables locales declaradas en la funcion Los programadores suelen utilizar el seguimiento de la pila durante el debugging interactivo y post mortem Los usuarios finales pueden ver un seguimiento de la pila que se muestra como parte de un mensaje de error que luego el usuario puede informar a un programador Un seguimiento de pila permite rastrear la secuencia de funciones anidadas llamadas hasta el punto donde se genera el seguimiento de pila En un escenario post mortem esto se extiende hasta la funcion donde ocurrio la falla pero no fue necesariamente causada Las llamadas de hermanos no aparecen en un seguimiento de pila Como ejemplo el siguiente programa de Python contiene un error def a i 0 j b i return j def b z k 5 if z 0 c return k z def c error a La ejecucion del programa con el interprete estandar de Python produce el siguiente mensaje de error Traceback most recent call last File tb py line 15 in lt module gt a File tb py line 3 in a j b i File tb py line 9 in b c File tb py line 13 in c error NameError name error is not defined El seguimiento de la pila muestra donde ocurre el error es decir en la funcion c Tambien muestra que la funcion c fue llamada por b que fue llamada por a que a su vez fue llamada por el codigo en la linea 15 La ultima linea del programa Los registros de activacion para cada una de estas tres funciones se organizarian en una pila de modo que la funcion a ocuparia la parte inferior de la pila y la funcion c ocuparia la parte superior de la pila Ayuda de lenguaje EditarMuchos lenguajes de programacion incluidos Java y C tienen soporte integrado para recuperar el seguimiento de la pila actual a traves de llamadas al sistema C no tiene soporte incorporado para hacer esto pero los usuarios de C pueden recuperar seguimientos de pila con por ejemplo la biblioteca stacktrace En JavaScript las excepciones contienen una propiedad de stack que contiene la pila desde el lugar donde se lanzo Vease tambien EditarContexto informatica Manejo de excepcionesReferencias Editar libc manual backtraces gnu org Consultado el 8 July 2014 traceback Print or retrieve a stack traceback python org Consultado el 8 July 2014 Datos Q1554400Obtenido de https es wikipedia org w index php title Stack trace amp oldid 130669908, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos