Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Depurar un programa MATLAB

Para depurar su programa MATLAB® gráficamente, utilice el editor/depurador. Como alternativa, puede utilizar las funciones de depuración en la ventana de comandos. Ambos métodos son intercambiables.

Antes de comenzar la depuración, asegúrese de que el programa está guardado y que el programa y los archivos que llama existen en la ruta de búsqueda o en la carpeta actual.

  • Si ejecuta un archivo con cambios no guardados en el editor, el archivo se guardará automáticamente antes de que se ejecute.

  • Si ejecuta un archivo con cambios no guardados desde la ventana de comandos, MATLAB software ejecutará la versión guardada del archivo. Por lo tanto, no ve los resultados de sus cambios.

Establecer punto de interrupción

Defina los puntos de interrupción para pausar la ejecución de un archivo MATLAB de modo que pueda examinar el valor o las variables en las que cree que podría ser un problema. Puede establecer puntos de interrupción mediante el editor, utilizando las funciones de la ventana de comandos o ambas.

Existen tres tipos diferentes de puntos de interrupción: estándar, condicional y error. Para agregar un punto de interrupción estándar en el editor, haga clic en el callejón de puntos de interrupción en una línea ejecutable en la que desee establecer el punto de interrupción. El callejón de punto de interrupción es la columna angosta en el lado izquierdo del editor, a la derecha del número de línea. Las líneas ejecutables se indican mediante un guión (—) en el callejón de puntos de interrupción. Por ejemplo, haga clic en el callejón de puntos de interrupción situado junto a la línea 2 del código siguiente para agregar un punto de interrupción en esa línea.

Si una instrucción ejecutable abarca varias líneas, puede establecer un punto de interrupción en cada línea de dicha instrucción, aunque las líneas adicionales no tengan un (guión) en el callejón de punto de interrupción. Por ejemplo, en este código. puede establecer un punto de interrupción en las cuatro líneas:

Para obtener más información sobre los diferentes tipos de puntos de interrupción, consulte Establecer puntos de interrupción.

Ejecutar archivo

Después de establecer puntos de interrupción, ejecute el archivo desde la ventana de comandos o el editor. Al ejecutar el archivo se producen estos resultados:

  • El Run el botón cambia a un Pause botón .

  • El indicador en la ventana de comandos cambia a K>> indicando que MATLAB está en modo de depuración y que el teclado está en control.

  • MATLAB se detiene en el primer punto de interrupción del programa. En el editor, una flecha verde justo a la derecha del punto de interrupción indica la pausa. El programa no ejecuta la línea donde se produce la pausa hasta que se reanuda la ejecución. Por ejemplo, aquí el depurador se detiene antes de que el programa ejecute x = ones(1,10);.

  • MATLAB muestra el espacio de trabajo actual en el Function Call Stack, en la ficha Editor de la sección Debug.

    Si utiliza funciones de depuración desde la ventana de comandos, utilice dbstack para ver la pila de llamadas de función.

Para obtener más información sobre el uso de la pila de llamadas de función, consulte Seleccionar espacio de trabajo

Pausar un archivo en ejecución

Para pausar la ejecución de un programa mientras se está ejecutando, vaya a la ficha Editor y haga clic en el Pause botón . MATLAB detiene la ejecución en la siguiente línea ejecutable, y el Pause el botón cambia a un Continue botón . Para continuar la ejecución, pulse el Continue botón .

La pausa es útil si desea comprobar el progreso de un programa de ejecución prolongada para asegurarse de que se está ejecutando como se esperaba.

Nota

Hacer clic en el botón de pausa puede hacer que MATLAB se detenga en un archivo fuera de su propio archivo de programa. Pulsando el Continue el botón reanuda la ejecución normal sin cambiar los resultados del archivo.

Buscar y solucionar un problema

Mientras el código está en pausa, puede ver o cambiar los valores de las variables, o puede modificar el código.

Ver o cambiar variable durante la depuración

Ver el valor de una variable durante la depuración para ver si una línea de código ha producido o no el resultado esperado. Para ello, coloque el puntero del mouse a la izquierda de la variable. El valor actual de la variable aparece en una punta de datos.

La punta de datos permanece en la vista hasta que se mueve el puntero. Si tiene problemas para conseguir que aparezca la sugerencia de datos, haga clic en la línea que contiene la variable y, a continuación, mueva el puntero junto a la variable. Para obtener más información, vea Examinar valores durante la depuración.

Puede cambiar el valor de una variable durante la depuración para ver si el nuevo valor produce los resultados esperados. Con el programa en pausa, asigne un nuevo valor a la variable en la ventana de comandos, el explorador del área de trabajo o el editor de variables. Luego, continúe corriendo o repasando el programa.

Por ejemplo, aquí MATLAB está en pausa dentro de un bucle for donde n = 2:

  • Escriba n = 7; en la línea de comandos para cambiar el valor actual de n de 2 a 7.

  • Prensa Continue para ejecutar la siguiente línea de código.

MATLAB ejecuta la línea de código x(n) = 2 * x(n-1); con n = 7.

Modificar la sección de código durante la depuración

Puede modificar una sección de código durante la depuración para probar posibles correcciones sin tener que guardar los cambios. Normalmente, es una buena práctica modificar un archivo MATLAB después de dejar de depurar y, a continuación, guardar la modificación y ejecutar el archivo. De lo contrario, podría obtener resultados inesperados. Sin embargo, hay situaciones en las que desea experimentar durante la depuración.

Para modificar un programa durante la depuración:

  1. Mientras el código está en pausa, modifique una parte del archivo que aún no se ha ejecutado.

    Los puntos de interrupción se vuelven grises, lo que indica que no son válidos.

  2. Seleccione todo el código después de la línea en la que MATLAB se ha pausado, haga clic con el botón derecho y, a continuación, seleccione Evaluate Selection en el menú contextual.

Una vez finalizada la evaluación del código, detenga la depuración y guarde o deshaga los cambios realizados antes de continuar con el proceso de depuración.

Paso a través del archivo

Durante la depuración, puede pasar a través de un archivo MATLAB, haciendo una pausa en los puntos donde desea examinar los valores.

En esta tabla se describen las acciones de depuración disponibles y los diferentes métodos que se pueden utilizar para ejecutarlos.

Descripción

Botón de barra de herramientas

Función alternativa

Continuar la ejecución del archivo hasta la línea donde se coloca el cursor. También disponible en el menú contextual.

Run to Cursor

Ninguno

Ejecute la línea actual del archivo.

Step

dbstep

Ejecute la línea actual del archivo y, si la línea es una llamada a otra función, pase a esa función.

Step In

dbstep in

Reanudar la ejecución del archivo hasta la finalización o hasta que se encuentre otro punto de interrupción.

Continue

dbcont

Después de entrar, ejecute el resto de la función llamada o función local, deje la función llamada y PAUSE.

Step Out

dbstep out

PAUSE el modo debug.

Pause

Ninguno

Salir del modo debug.

Quit Debugging

dbquit

Finalizar la sesión de depuración

Después de identificar un problema, finalice la sesión de depuración yendo a la ficha Editor y haciendo clic en Quit Debugging . Debe finalizar una sesión de depuración si desea cambiar y guardar un archivo, o si desea ejecutar otros programas en MATLAB.

Después de dejar de depurar, los indicadores de pausa en la pantalla del editor ya no aparecerán y el indicador de >> normal reaparecerá en la ventana de comandos en lugar del K>>. Ya no puede acceder a la pila de llamadas.

Si el software MATLAB se vuelve insensible cuando se detiene en un punto de interrupción, pulse Ctrl+c para volver al indicador MATLAB.

Temas relacionados