Depuración de programas

El sistema de Pep/8 proporciona herramientas de depuración para ayudar a localizar errores en los programas que usted escribe. Las herramientas incluyen un volcado de memoria, puntos de quiebre, y la característica de trazo simbólico. Si está depurando un programa en lenguaje de máquina Que escribiste puede usar la función de volcado de memoria pero no se puede utilizar un conjunto de puntos de quiebre o la función trace simbólico. Usted puede utilizar todas las características de depuración si está depurando un programa en lenguaje ensamblador. Una herramienta de depuración adicional para convertir el byte, que está disponible cada vez que la aplicación se está ejecutando.

Temas: El volcado de memoria, Puntos de quiebre, Rastro simbólico, Convertir de bytes.

El volcado de memoria

Para ver el volcado de memoria, seleccione Ver-> Código/CPU/Memoria en el menú o haciendo clic en el icono correspondiente en la barra de herramientas.

codecpumemory codecpumemoryicon

La aplicación Pep/8 de puede funcionar mucho más lento cuando el panel volcado de memoria esta visible. Puede hacer clic en cualquiera de los otros dos iconos para ver u ocultar el panel volcado de memoria.

codecodememory

Puede desplazarse a cualquier lugar de la memoria usando la barra de desplazamiento a la derecha. Para desplazarse a una posición de memoria específica introduzca la dirección en hexadecimal en el campo de entrada en la parte inferior del panel. Haga clic en el botón SP para desplazarse a la pila en tiempo de ejecución. Haga clic en el botón PC para desplazarse a la región de la memoria a la que apunta el contador de programa.

fig0434

Activar el modo de depuración

Para utilizar el volcado de memoria debe cambiar primero al modo de depuración. Si está depurando un programa en lenguaje de máquina que usted escribió, el primer paso es entrar el programa en hexadecimal en el panel de código objeto. La siguiente figura muestra el programa objeto de la Figura 4:34 del libro de texto.

fig0434

Después, seleccione Construir-> Depuración de objetos en el menú, que te pone en el modo de depuración.

startdebuggingobject

Si está depurando un programa en lenguaje ensamblador que escribiste Que, abra el programa en el panel de código fuente. Ensamblelo de nuevo seleccionando Construir-> Ensamblar en el menú o hacer clic en el icono del martillo en la barra de herramientas.

assemble assembleicon

A continuación, seleccione Construir -> Iniciar depuración de codigo en el menú, o haga clic en el icono con el error en la barra de herramientas, que te pone en el modo de depuración.

startdebuggingsource startdebuggingicon

Seguimiento en modo de depuración

Mientras está en el modo de depuración, puede hacer clic en el botón Paso a paso en el panel de la CPU, el cuál va a realizar ciclo von Neumann de la CPU.

singlestep

El panel de CPU muestra los valores de los bits NZVC y de cada uno de los registros en la CPU. La siguiente captura de pantalla muestra el choque CPU después de un clic en el botón Paso a paso para el programa objeto de la Figura 4,34.

fig0434cpupane

El panel de la CPU muestra el contenido del puntero de pila acumulador, registro de índice, y el contador primero en hex programa y a continuación, en decimal. Se muestra la primera especificador de instrucción en binario, y luego como una regla mnemotécnica. Si la instrucción es nonunary, se decodifica el campo de direccionamiento y muestra la letra correspondiente para el modo de direccionamiento después de la tecla de acceso, y muestra el operando especificador.

El operando no es parte de la CPU, excepto para el caso de direccionamiento inmediato cuando el operando es el especificador de operando. Sin embargo, para la conveniencia del programador, la caída de la CPU calcula el valor del modo de direccionamiento operando de la y lo muestra así. El campo Operando en el panel de la CPU se encierra entre paréntesis para enfatizar el hecho que no es parte de la CPU.

operand

Los valores en el panel de la CPU son los valores después de la instrucción en el especificador de instrucción se ha ejecutado. Por ejemplo, los valores de las capturas de pantalla anteriores son los valores después de la primera CHARI ejecuta. En el ciclo de von Neumann, los incrementos del contador del programa antes de la instrucción se ejecuta. Por lo tanto, el valor del contador de programa es la dirección de la siguiente instrucción a ejecutar. En la imagen anterior, el contador de programa es 3, que es la dirección de la siguiente instrucción a ejecutar, Que si bien la instrucción sólo se ejecuta la instrucción en la dirección 0.

Al paso por el programa, el accidente volcado de memoria se destacan en rojo los bytes Que han cambiado, y pone de relieve en azul los bytes de la instrucción que el especificado por el contador de programa. La siguiente captura de pantalla muestra el choque volcado de memoria después de que el primer clic del botón de un solo paso.

fig0434memorydump

Cada línea del panel de volcado de memoria muestra ocho bytes, cada uno representado a los dos dígitos hexadecimales. La dirección en la primera columna es la dirección del primer byte. La columna más a la derecha muestra el valor de los bytes en la fila muestra los caracteres ASCII. Si una cola carácter de control no se puede visualizar el byte, la columna muestra el valor en el período.

La captura de pantalla anterior destaca el byte en la dirección 000D en rojo por la primera instrucción CHARI entrada de la letra u en esa dirección. Este destaca los bytes que comienzan en la dirección 0003 en azul, ya que es el valor del contador de programa, Esos son los bytes son la instrucción se ejecutará a continuación.

El panel de volcado de memoria también destaca el byte superior de la pila en magenta. La siguiente captura de pantalla de la Figura 6.1 muestra la pila comienza en la dirección FBCE justo antes de ejecuta la ADDSP.

fig0601

Salir del modo de depuración

Si desea que el programa se ejecute hasta su finalización, haga clic en el botón Reanudar. El programa se ejecutará hasta el final y salir del modo de depuración.

resume

Si desea finalizar la sesión de depuración sin ejecutar el programa hasta su finalización, seleccione Construir->Detener depuración en el menú o haga clic en el icono de señal de stop en la barra de menú.

stopdebugging stopdebuggingicon

Ir a temas.

Break points

To use break points for an assembly language program enter the debugging mode as described in the previous section. Pep/8 will switch from the Code pane to the Trace pane and display the source program for tracing. The following screenshot shows the Trace pane for the program in Figure 5.15 of the text.

fig0515listingtrace

As you single step through the program, the CPU shows the content of the registers as described in the previous section. Remember that the CPU pane shows the values of the registers after the instruction in the instruction specifier has executed. In addition, the Trace pane highlights the instruction specified by the program counter, which is the next instruction to be executed. The following screenshot shows the Trace pane after five clicks of the Single Step button. The LDA instruction has just executed, and the ADDA instruction will execute next.

fig0515listingadda fig0515cpu

Setting break points

Each executable instruction in the Trace pane has a checkbox for setting a break point. The following screenshot shows the Trace pane for the program in Figure 5.15 before any statement has been executed. The programmer has set a breakpoint at the STA instruction.

fig0515breakpoint

When the programmer clicks the Resume button, the program resumes executing until it gets to an instruction with a breakpoint or until completion if no breakpoint is encountered. The following screenshots show what happens when the Resume button is clicked. Note that the STA instruction will execute next if the programmer clicks the Single Step button at this point.

resume fig0515resumed

Tracing traps

Si quieres seguir la ejecución del sistema operativo de una instrucción de trap, haga clic en la casilla de verificación Trampas rastro en la CPU antes del accidente entrar en el modo de depuración.

tracetraps

A medida que paso a través de su programa, si se ejecuta una instrucción de trap el panel de seguimiento mostrará las instrucciones individuales en el controlador de trampa del sistema operativo. La siguiente captura de pantalla muestra la instrucción DECI a punto de ser ejecutado.

fig0515deci

Al hacer clic en el botón Paso a paso en este punto hace que el panel de seguimiento para cambiar al controlador de trampa en el sistema operativo. La captura de pantalla muestra el panel de seguimiento después de hacer clic en el botón Paso a paso. Se destaca la primera instrucción en el controlador de la trampa del sistema operativo.

fig0515trap

Cuando usted está trazando una trampa de sistema operativo, puede breakpoints septiembre y haga clic en Paso a paso o Continuar como lo haría con el programa fuente. Si se continua en el sistema operativo y el encuentro sin más puntos de interrupción, Pep/8 procederá después de la vuelta de la trampa instrucción RETTR para el programa de origen hasta que encuentra un punto de quiebre allí.

Ir a temas.

Rastro simbólico

La característica de seguimiento simbólica es controlada por las etiquetas de seguimiento se describen en el texto. Etiquetas de rastreo se figura en lenguaje ensamblador y los comentarios no tienen ningún efecto sobre el código objeto generado. Cada etiqueta rastro comienza con el carácter # y materiales de información para el trazador símbolo en modo de formatear y etiquetar la celda de memoria en la ventana de traza.

Si su programa no incluye etiquetas de seguimiento, el panel de huella de la memoria no será visible cuando se ejecuta el programa. Puede seguir utilizando el depurador a un solo paso a través de su programa y un conjunto de puntos de quiebre. Si no incluye etiquetas de seguimiento, pero los errores se detectan en las etiquetas, se emitirá la alerta azul. Todavía se puede ejecutar el programa y utilizar el depurador, pero el panel de huella de la memoria no será visible. La pantalla de abajo muestra lo que sucede si usted comete un error en una de las etiquetas de seguimiento en el programa de la Figura 5.26

fig518tracetagwarning

Si su programa no incluye etiquetas de seguimiento y no tienen errores, la huella de la memoria se convertirá automáticamente en panel rastro visible debajo de la lista. Como un solo paso a través del programa, se puede ver las variables globales a la izquierda, y la pila en tiempo de ejecución a la derecha. La única Que el control de interfaz de usuario afecta a la visualización de la curva simbólica es la magnificación de entrada en la parte inferior del panel de la izquierda. Aquí tenemos una imagen de la huella de memoria del programa de choque en la figura 6.21. La celda de memoria es k en la parte superior de la pila de tiempo de ejecución es de color rojo debido a la instrucción STA sólo ha cambiado su valor.

memorytrace

La función de rastro simbólico muestra las variables globales asignados al .BLOCK punto comando, parámetros y variables locales asignados con la instrucción SUBSP, los campos de la estructura global struct, y el almacenamiento del montón asignado con el operador new. Ver el libro de texto para obtener información sobre cómo utilizar las etiquetas de rastreo en sus programas.

Ir a temas.

Convertidor de bytes

Toda vez que la aplicación Pep/8 este en marcha, el convertidor de bytes está disponible en la barra de herramientas. Los cuatro campos de entrada representan el valor de un solo byte de la izquierda a la derecha representada en decimal, hexadecimal, binario y ASCII. Basta con introducir cualquier valor en cualquier campo de entrada y el resto de campos se mostrará el valor en el formato del mismo correspondiente. Este es el resultado de la introducción de la letra P en el campo ASCII.

byteconverter

Una instrucción decodificador especificador está a la derecha de los cuatro campos de entrada. Se muestra el mnemónico de instrucción y, posiblemente, el modo de abordar el supuesto de interpretar el valor de byte a un especificador de instrucciones.

Ir a temas.