Red de conocimiento informático - Material del sitio web - Cómo depurar el lenguaje c en visual c 6.0

Cómo depurar el lenguaje c en visual c 6.0

1. Introducción a la función de depuración de VC

Después de editar un programa fuente en C, puede compilarlo y ejecutarlo utilizando el método descrito en la sección anterior. Si el programa no tiene errores de compilación pero no tiene resultados de ejecución, o los resultados de ejecución son incorrectos, debe llamar a las herramientas de compilación y depuración de VC para depurar su programa a fin de descubrir la causa del error y lograr resultados de ejecución correctos.

VC proporciona una variedad de herramientas y múltiples conjuntos de métodos para depurar programas en C. Los métodos comúnmente utilizados incluyen el método de menú, el método de barra de herramientas y el método de tecla de función. De hecho, estos tres métodos son similares o iguales. Simplemente elija uno de ellos según la familiaridad y el uso del usuario para completar el proceso de depuración. El autor está acostumbrado a utilizar el método de las teclas de función, porque el uso de las teclas de función no solo es conveniente para la operación, sino que también ahorra tiempo en la depuración del programa, por lo que el proceso de depuración se puede completar en menos tiempo. La legislación anterior se presenta a continuación junto con las herramientas de depuración.

En el espacio en blanco de la barra de menú y la barra de herramientas debajo de la ventana VC, haga clic derecho para activar el menú contextual y seleccione el elemento del menú "Compilar". En este momento, aparecerá la barra de herramientas de depuración. Ventana VC.

Las herramientas en la barra de herramientas de depuración se pueden dividir en dos partes: herramientas para controlar la ejecución del programa y herramientas para configurar ventanas de observación.

① Para la herramienta de ejecución del programa de control, los botones, teclas de función y descripciones de funciones más utilizados de izquierda a derecha son:

●Reiniciar para volver a ejecutar el programa, la tecla de función es Ctrl Mayús F5. No importa en qué estado se encuentre el programa fuente C (edición, ejecución, depuración), presionar este botón puede hacer que el programa comience desde la compilación y entre gradualmente en el estado de depuración.

●Detener depuración Detiene la depuración del programa. La tecla de función es Shift F5. Cuando el proceso de depuración se encuentra en el estado de seguimiento de la ejecución del programa, al presionar este botón se detendrá el programa de depuración y se volverá al estado de edición. Este botón está deshabilitado en el modo de edición.

● Mostrar siguiente declaración Indica la línea de declaración que se ejecuta actualmente en el programa.

● Paso a paso se ejecuta en un solo paso y puede ingresar a la operación interna de la función. La tecla de función es F11. Durante el proceso de depuración del programa, al presionar este botón se puede rastrear en un solo paso la ejecución del programa. A diferencia del botón Stp Over, esta función puede ingresar al interior de la función y continuar rastreando las líneas de declaración dentro de la función.

Nota: Cuando se usa este botón, cuando está ubicado en una línea de instrucción con una llamada de función de biblioteca, no se usa la función F11 para evitar ingresar al bloque de ensamblaje de la función de biblioteca. Se utiliza la clave.

● Step Over ejecuta el programa en un solo paso y la tecla de función es F10. La función de este botón es similar a F11, pero no ingresa a la función. Trata cada declaración como un paso, incluidas las declaraciones de llamada de función.

●Step Out sale de la función actual, la tecla de función es Shift F11. Cuando el programa se ejecuta dentro de una función, después de presionar este botón, el estado de depuración saldrá del interior de la función y volverá a la declaración actual de la función principal que llamó a la función.

●Ejecutar hasta el cursor Ejecutar hasta la posición actual del cursor, la tecla de función es Ctrl F10. Cuando el programa está en estado de depuración, para omitir una determinada sección del programa, puede preposicionar el cursor en una determinada línea de instrucción. Presione este botón para ejecutar el programa directamente en la posición actual del cursor, ahorrando así tiempo y acelerando. pasos de depuración.

② En cuanto a la herramienta de configuración de la ventana de observación, su función es principalmente cooperar con la operación de seguimiento del programa y establecer algunos puntos de observación para localizar la ubicación del error y encontrar la causa del error.

● QuickWatch observa rápidamente el valor de una expresión. La tecla de función es Shift F9. Cuando el programa se ejecuta en una línea de declaración clave, puede presionar este botón para mostrar la ventana "QuickWatch" en la pantalla, donde: a en el cuadro de lista desplegable de expresión E es el valor en el programa fuente actual ingresado por el usuario Un nombre de matriz; V Los valores de las columnas "Nombre" y "Valor" en la lista de valores actual son los nombres de los elementos y los valores de los elementos de todos los elementos de una matriz.

●Watch establece el punto de observación. Cuando el usuario presiona el botón, la pantalla muestra la ventana de observación, en la que la columna "Nombre" y la columna "Valor" están vacías. En este momento, el usuario puede ingresar el punto de observación que desea observar en la columna Nombre, es decir, el nombre de una variable en el programa, y ​​luego presionar Enter. El valor actual de la variable se mostrará en el. Columna de valor. Se pueden configurar múltiples puntos de observación y también se pueden colocar múltiples puntos de observación en diferentes etiquetas de observación (Watch1, Watch2...).

● Lista de variables, cuando se presiona este botón, la pantalla muestra la ventana de lista de variables como se muestra. La columna "Nombre" y la columna "Valor" en la ventana enumeran todos los nombres de variables y los valores correspondientes en la función actual. Entre ellos: las variables simples solo muestran el nombre de la variable y su valor tienen un símbolo " " al frente. del nombre de la matriz y la columna Valor muestra el valor de su dirección.

●Lista de registros de registros, presione este botón, la ventana de registro se mostrará en la pantalla y el contenido de todos los registros se enumerará en la ventana.

●Lista de memoria de memoria, presione este botón, se mostrará la ventana de lista de memoria que se muestra en la pantalla, en la cual el cuadro de texto "Dirección A" muestra el valor de dirección actual de la memoria y la siguiente lista El cuadro que muestra es el valor de todas las áreas de memoria a partir de la dirección especificada, ? significa que su valor es incierto (no se asigna ningún valor definido). El usuario puede encontrar la dirección de una variable o el valor de un nombre de matriz en la ventana "Ver" cuando el programa se está ejecutando (el nombre de la matriz en sí es una dirección) y luego generar el valor en el cuadro de texto de "Una dirección " en Su valor almacenado se puede ver inmediatamente en el área de la lista de memoria, pero el valor es un número hexadecimal y un número entero ocupa un área de almacenamiento de cuatro bytes. Para obtener más información, consulte el siguiente ejemplo.

Figura 13

2. Cómo utilizar VC para depurar programas C

El siguiente programa es una pregunta de corrección de errores basada en computadora en lenguaje C de nivel 2 del Examen Nacional de Rango de Computación. Se pide a los candidatos que depuren el programa para que pueda generar resultados. los resultados correctos según sea necesario.

① Descripción de la función del programa

La función de la función fun en el programa dado C003.C es: de la cadena señalada por s, encuentre el número de subcadenas señaladas por t como Función valor devuelto.

Por ejemplo, cuando el contenido de la cadena señalada por s es: "abcdabfab" y el contenido de la cadena señalada por t es: "ab", la función devuelve el número entero 3.

Por favor corrija los errores en el programa para que pueda producir resultados correctos.

Nota: ¡No cambie la función principal, no agregue ni elimine líneas, ni cambie la estructura del programa!

② Programa fuente

#define N 80

int fun(char *s, char *t)

{

int n=0; char *p, *r;

mientras ( *s )

{

p=s;

r=p

mientras(*r)< / p>

if(*r==*p)

{

r

p

}<; / p>

si no

if(*r = O)

n

s

}<; / p>

return n;

}

main()

{

char a[N], b[ N ]; int m;

printf("Ingrese la subcadena b: "); ) ;

gets( b );

m=fun(a, b

printf(" El resultado es: m=d ", m); ) ;

}

③ Proceso de depuración

a) Inicie el sistema VC, edite el programa fuente de salida y asígnele el nombre c003.c. se muestra en la Figura 14.

Figura 14

b) Presione la tecla de función Ctrl F11 para compilar el programa fuente. El resultado de la compilación se muestra en la Figura 15.

Figura 15

Los resultados de la compilación nos dicen que hay un error y dos advertencias en el programa. Entre ellos: el motivo de la advertencia es que la función del sistema no incluye el archivo de encabezado stdio.h, y el motivo del error es que el identificador (identifierf) 'O' en la línea 16 no está definido. Cabe señalar que el error aquí es muy especial: desde el punto de vista literal del programa, la O aquí parece ser el número 0, y los candidatos comunes no pueden distinguir ni pensar que es O. Sin embargo, dado que el sistema de compilación genera un mensaje de error, el programa debe modificarse según el mensaje de error. Agregue una línea de comando de inclusión de archivos "#include" delante del programa fuente, luego reescriba la letra O en el carácter 0 (esta es la única forma para los candidatos que carecen de experiencia en programación), compile el programa nuevamente y el resultado indica informarnos que el programa fue compilado exitosamente.

Luego, presione la tecla de función Ctrl F5 para ejecutar el programa e ingrese las dos cadenas requeridas por la pregunta en la pantalla que solicita la entrada. La pantalla se muestra como se muestra en la Figura 16. El resultado una vez más. le dice al candidato: el resultado del programa es Error, es decir, hay un error lógico en el programa.

Figura 16

c) A continuación, realizamos una depuración en un solo paso en el programa para descubrir la causa real del error del programa.

Para depurar un programa con errores lógicos, primero debe determinar la ubicación aproximada donde puede ocurrir el error en el programa. Según la explicación de la pregunta se puede determinar que el error existe en la función fun. Con base en este juicio, primero colocamos el cursor en la primera línea de instrucción ejecutable de la función divertida y luego presionamos la tecla de función Ctrl F10 para permitir que el programa se ejecute hasta la posición del cursor. Nota: En medio de este proceso, debe ingresar al estado de la pantalla de entrada y esperar la entrada de las cadenas a y b. Ingrese según sea necesario y confirme con el carácter de retorno de carro. Cuando vea parpadear el icono de VC en la barra de tareas, cambie la ventana al estado VC, como se muestra en la Figura 17:

Figura 17

A continuación, presione la tecla de función F10, Mientras observa los cambios en las cadenas p y r en la subventana Variables en la parte inferior de la pantalla, también preste atención a la flecha del puntero amarillo en el lado izquierdo de la ventana VC. Siga repitiendo el proceso anterior y encontrará que la flecha amarilla nunca apunta a la declaración "n;". El primer punto de error lógico que buscamos es la expresión después de la declaración if. En circunstancias normales, la expresión después de if debería ser una expresión relacional o una expresión lógica, y la expresión aquí es una expresión de asignación. La declaración correcta debería ser:

if(*r == 0 )

n ;

Después de la modificación, presione Ctrl F5 para ejecutar el programa. El resultado del programa se muestra en la Figura 18.

Para utilizar las funciones y métodos de depuración de VC para observar mejor los patrones cambiantes de otras variables relacionadas, durante el proceso anterior, también puede ingresar otras variables en la ventana VC Watch y realizar un seguimiento de la ejecución de el programa. Observe sus cambios durante el proceso.

Figura 18

Este resultado también es incorrecto. Este es el otro extremo del primer resultado incorrecto: cambiar de m=0 a m=10.

¿Cómo saber el motivo? Repasemos los cambios en los valores de las cadenas p y r en la ventana Variables cuando se ejecuta el programa de seguimiento. Combinado con la función de la cadena r en el programa, no es difícil ver que p y r deberían ser diferentes. , y la cadena p apunta a la cadena s, y la cadena r debe apuntar a la cadena t. El resultado correcto debería ser: cambie la declaración "r=p;" a "r=t;".