stringtranslate.com

Paso a paso (depuración)

La animación o paso a paso del programa se refiere al método de depuración de ejecutar código una instrucción o línea a la vez. El programador puede examinar el estado del programa, la máquina y los datos relacionados antes y después de la ejecución de una línea de código particular. Esto permite al programador evaluar los efectos de cada declaración o instrucción de forma aislada y, por lo tanto, obtener información sobre el comportamiento (o mal comportamiento) del programa en ejecución. Casi todos los IDE y depuradores modernos admiten este modo de ejecución.

Historia

Consola del operador System/360 (Modelo 65) , con luces de valor de registro e interruptores y botones de palanca (centro de la imagen).

El paso de instrucción o ciclo único originalmente se refería a la técnica de detener el reloj del procesador y avanzarlo manualmente un ciclo a la vez. Para que esto sea posible se requieren tres cosas:

En la gama de procesadores IBM System 360 anunciada en 1964, estas funciones estaban proporcionadas por interruptores, botones y bancos de luces de neón en el panel frontal. Otros sistemas, como el PDP-11 , proporcionaron instalaciones similares.

En los procesadores más nuevos, que pueden no admitir la parada física del reloj y tienen demasiado estado interno para mostrarlo razonablemente en un panel, se puede proporcionar una funcionalidad similar a través de un indicador de trampa , que cuando está habilitado indica al procesador que se detenga después de cada instrucción de manera similar. a un punto de interrupción .

A medida que el multiprocesamiento se volvió más común, tales técnicas tendrían una practicidad limitada, ya que muchos procesos independientes se detendrían simultáneamente. Esto llevó al desarrollo de software propietario de varios proveedores independientes que proporcionaban características similares pero restringían deliberadamente los puntos de interrupción y el paso de instrucciones a programas de aplicación concretos en espacios de direcciones y subprocesos concretos . El estado del programa (según corresponda a la aplicación/tema elegido) se guardó para examinarlo en cada paso y se restauró antes de reanudarlo, dando la impresión de un entorno de usuario único. Normalmente, esto es suficiente para diagnosticar problemas en la capa de aplicación.

En lugar de utilizar un botón de parada físico para suspender la ejecución, para luego comenzar a recorrer el programa de aplicación, generalmente se debe establecer de antemano un punto de interrupción o una solicitud de "Pausa", generalmente en una instrucción/instrucción particular en el programa (elegida de antemano o, alternativamente, por predeterminado, en la primera instrucción).

Para proporcionar una "animación" de pantalla completa de un programa, normalmente se requiere un dispositivo de E/S adecuado, como un monitor de vídeo, que pueda mostrar una sección razonable del código (por ejemplo, en código de máquina desensamblado o en formato de código fuente ) y proporcionar un puntero (por ejemplo, <==) a la instrucción o línea de código fuente actual. Por esta razón, el uso generalizado de estos animadores de pantalla completa en el mundo mainframe tuvo que esperar a la llegada de los sistemas de procesamiento de transacciones , como CICS a principios de la década de 1970, y que inicialmente se limitaron a depurar programas de aplicaciones que operaban dentro de ese entorno. Las versiones posteriores de los mismos productos proporcionaron monitoreo/depuración entre regiones de programas por lotes y otros sistemas operativos y plataformas.

Con la introducción mucho más tardía de las computadoras personales, alrededor de 1980 en adelante, los depuradores integrados pudieron incorporarse más ampliamente en este dominio de usuario único y proporcionaron animaciones similares al dividir la pantalla del usuario y agregar una "consola" de depuración para proporcionar interacción al programador.

Borland Turbo Debugger era un producto independiente introducido en 1989 que proporcionaba animación de programas en pantalla completa para PC. Las versiones posteriores agregaron soporte para combinar la animación con líneas fuente reales extraídas en el momento de la compilación.

Técnicas de animación de programas.

Existen al menos tres técnicas de software distintas para crear "animaciones" durante la ejecución de un programa.

Comparación de métodos

La ventaja del último método es que no se realizan cambios en el programa compilado para proporcionar el diagnóstico y hay un alcance casi ilimitado para diagnósticos extensos, ya que la herramienta puede aumentar los diagnósticos del sistema host con funciones adicionales de seguimiento de software. También es posible diagnosticar (y prevenir) muchos errores de programa automáticamente utilizando esta técnica, incluidas violaciones de almacenamiento y desbordamientos de búfer . La detección de bucle también es posible utilizando el seguimiento automático de instrucciones junto con umbrales de recuento de instrucciones (por ejemplo, pausar después de 10 000 instrucciones; mostrar las últimas n instrucciones). El segundo método solo altera la instrucción que se detendrá antes de ejecutarse y también puede restaurarla antes de la reanudación opcional mediante el programador. Algunos animadores permiten opcionalmente el uso de más de un método según los requisitos. Por ejemplo, usar el método 2 para ejecutar hasta un punto particular a toda velocidad y luego usar la simulación del conjunto de instrucciones a partir de entonces.

Características adicionales

El animador puede, o no, combinar otras funciones de prueba/depuración dentro de él, como seguimiento de programa , volcado, punto de interrupción condicional y alteración de memoria , alteración del flujo del programa , análisis de cobertura de código , detección de "puntos calientes", detección de bucle o similar.

Referencias

enlaces externos