Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Depurar archivos de código de MATLAB

Desde R2021b. Reemplaza a Debug a MATLAB Program (R2021a).

Puede diagnosticar problemas en sus archivos de código de MATLAB® depurando el código de manera interactiva en el editor y en Live Editor, o bien de manera programática empleando las funciones de depuración en la ventana de comandos.

Hay varias formas de depurar el código:

  • Muestre la salida eliminando los puntos y comas.

  • Ejecute el código hasta una línea concreta y detenga el proceso haciendo clic en el botón Run to Here .

  • Entre en funciones y scripts mientras está en pausa haciendo clic en el botón Step In .

  • Agregue puntos de interrupción al archivo para poder detenerse en líneas concretas al ejecutar código.

Antes de iniciar la depuración y para evitar resultados inesperados, guarde los archivos de código y asegúrese de que estos y todos los archivos que llamen estén en la ruta de búsqueda o en la carpeta actual. MATLAB gestiona los cambios sin guardar de diferente modo dependiendo del lugar desde el que realice la depuración:

  • Editor — Si un archivo contiene cambios sin guardar, MATLAB guarda el archivo antes de ejecutarlo.

  • Live Editor — MATLAB ejecuta todos los cambios de un archivo, tanto si están guardados como si no lo están.

  • Ventana de comandos — Si un archivo contiene cambios sin guardar, MATLAB ejecuta la versión guardada del archivo. Por tanto, no verá los resultados de sus cambios.

Mostrar la salida

Una manera de determinar dónde se ha producido un problema en el archivo de código de MATLAB es mostrar la salida. Para mostrar la salida de una línea, elimine el punto y coma del final de la línea en cuestión. En el editor, MATLAB muestra la salida en la ventana de comandos. En Live Editor, MATLAB muestra la salida con la línea de código que la crea.

Por ejemplo, supongamos que tiene un script llamado plotRand.m que representa un vector de datos aleatorios y traza una línea horizontal en la gráfica en la media.

n = 50;
r = rand(n,1);
plot(r)

m = mean(r);
hold on
plot([0,n],[m,m])
hold off
title("Mean of Random Uniform Data")

Para mostrar la salida de la función rand en la línea 2, elimine el punto y coma del final de la línea. MATLAB muestra el valor de r en la ventana de comandos.

Command Window showing a call to the plotRand function followed by the resulting output, the value of r

En Live Editor, MATLAB muestra el valor de r con la línea 2.

plotRand live script with the semicolon removed from the end of line 2 and the resulting output, the value of r and the plot, displayed on the right

Depurar usando Run to Here

Para analizar el estado de todas las variables del área de trabajo en un punto específico del código, ejecute el archivo de código y, a continuación, ponga en pausa el proceso. Para ejecutar código hasta una línea concreta y luego poner el proceso en pausa, haga clic en el botón Run to Here situado a la izquierda de la línea. Si no se puede llegar a la línea seleccionada, MATLAB continúa ejecutándose hasta llegar al final del archivo o hasta un punto de interrupción.

Durante la depuración, el botón Run to Here se convierte en el botón Continue to Here . En funciones y clases, ejecutar hasta una línea específica y luego detenerse solo está disponible al depurar utilizando el botón Continue to Here . En la versión R2021a y anteriores, para ejecutar hasta la posición del cursor y detenerse durante la depuración, vaya a la pestaña Editor y haga clic en el botón Run to Cursor .

Por ejemplo, haga clic en el botón Run to Here situado a la izquierda de la línea 2 en plotRand.m. MATLAB ejecuta plotRand.m empezando en la línea 1 y se detiene antes de ejecutar la línea 2.

plotRand script with the Run to Here button visible in the left margin, next to the line number for line 2

Cuando MATLAB se detiene, se producen varios cambios:

  • El botón Run de la pestaña Editor o Live Editor pasa a ser el botón Continue.

  • La línea de comandos de la ventana de comandos cambia a K>>, lo que indica que MATLAB se encuentra en modo de depuración y que el teclado tiene el control.

  • MATLAB indica la línea en la que se ha detenido con una flecha y un resaltado verde.

    plotRand script with a green arrow and green highlighting on line 2, indicating that MATLAB is paused at line 2

Sugerencia

Se recomienda evitar modificar un archivo mientras MATLAB esté detenido. Los cambios realizados mientras MATLAB está en pausa no se ejecutan hasta después de que MATLAB termine de ejecutar el código y se reanude la ejecución del código.

La línea en la que MATLAB se detiene no se ejecuta hasta después de continuar con la ejecución del código. Para seguir ejecutando el código, haga clic en el botón Continue. MATLAB continúa ejecutando el archivo hasta que llegue al final de este o a un punto de interrupción. También puede hacer clic en el botón Continue to Here situado a la izquierda de la línea de código hasta la que desea continuar ejecutando.

Para continuar ejecutando el código línea por línea, en las pestañas Editor o Live Editor, haga clic en Step. MATLAB ejecuta la línea actual en la que se ha detenido y, después, se detiene en la línea siguiente.

plotRand script with a green arrow and green highlighting on line 3, indicating that MATLAB is paused at line 3

Visualizar el valor de una variable durante la depuración

Para ver el valor de una variable mientras MATLAB está detenido, coloque el cursor sobre la variable. El valor actual de la variable aparece en una sugerencia de datos. Las sugerencias de datos se mantienen visibles hasta que mueve el puntero.

plotRand script paused at line 2 with a data tip showing the size, data type, and value of the variable n

También puede ver el valor de una variable escribiendo el nombre de esta en la ventana de comandos. Por ejemplo, para ver el valor de la variable n, escriba n y pulse Enter. La ventana de comandos muestra el nombre de la variable y su valor. Para ver todas las variables del área de trabajo actual, utilice el navegador del espacio de trabajo.

Para obtener más información, consulte Examine Values While Debugging.

Pausar un archivo en ejecución

Puede poner en pausa la ejecución de código prolongada mientras se está ejecutando para comprobar el progreso y garantizar que se ejecuta según lo previsto. Para poner en pausa la ejecución de código, vaya a la pestaña Editor o Live Editor y haga clic en el botón Pause. MATLAB se detiene en la siguiente línea ejecutable y el botón Pause pasa a ser el botón Continue. Para continuar con la ejecución de código, pulse el botón Continue.

Nota

Cuando hace clic en el botón Pause, es posible que MATLAB se ponga en pausa en un archivo fuera de su propio código. Además, es posible que vea un retraso significativo antes de que MATLAB se ponga en pausa y el botón Pause cambie a un botón Continue. En algunos casos, es posible que MATLAB no se ponga en pausa. La razón es que MATLAB no puede ponerse en pausa en algún código integrado.

Entrar en funciones

Durante la depuración, puede entrar en archivos llamados, deteniéndose en puntos en los que desea analizar valores. Para entrar en un archivo, haga clic en el botón Step In , situado justo a la izquierda de la función o script en la que desea entrar. MATLAB muestra el botón solo si la línea contiene una llamada a otra función o script. Después de entrar, haga clic en el botón Step Out situado en la parte superior del archivo, para ejecutar el resto de la función llamada, salir de la función llamada y, a continuación, poner en pausa.

De forma predeterminada, el botón Step In solo se muestra para funciones y scripts definidos por el usuario. Para mostrar el botón para todas las funciones y scripts, en la pestaña Home, en la sección Environment, haga clic en Preferences. A continuación, seleccione MATLAB > Editor/Debugger y, en la sección Debugging, establezca la opción Show inline Step In buttons en Always. Para que el botón no se muestre nunca, establezca la opción Show inline Step In buttons en Never.

También puede entrar y salir de funciones durante la depuración empleando los botones Step In o Step Out de las pestañas Editor o Live Editor. Estos botones no respetan la preferencia Show inline Step In buttons, y siempre entran y salen de las funciones de MathWorks® y las definidas por el usuario.

Pila de llamadas a funciones

Cuando entra en una función o un archivo llamados, MATLAB muestra la lista de las funciones que han ejecutado antes de detenerse en la línea actual. La lista, también llamada pila de llamadas a funciones, se muestra en la parte superior del archivo y muestra las funciones por orden, empezando en la izquierda con la primera llamada al script o la función y terminando a la derecha con el script o la función actual en los que MATLAB se ha detenido.

Function call stack for plotRand showing plotRand as the first called script and mean as the current function

Para cada función de la pila de llamadas, hay un área de trabajo correspondiente. Las áreas de trabajo contienen variables que crea en MATLAB o que importa desde archivos de datos u otros programas. Variables que asigna por medio de la ventana de comandos o que crea empleando scripts que pertenecen al área de trabajo básica. Variables que crea en una función que pertenece a su propia área de trabajo de funciones.

Puede examinar los valores de las variables fuera del área de trabajo actual seleccionando un área de trabajo diferente. Para obtener más información, consulte Examine Values While Debugging.

Agregar puntos de interrupción y ejecutar código

Si su archivo tiene líneas de código en las que quiere detenerse cada vez que ejecute su código, agregue puntos de interrupción en dichas líneas. Puede agregar puntos de interrupción de manera interactiva empleando el editor y Live Editor, de manera programática usando funciones de la ventana de comandos, o bien con ambas opciones.

Hay tres tipos de puntos de interrupción: estándar, condicional y de error. Para agregar un punto de interrupción estándar en el editor o Live Editor, haga clic en el número de línea (o en la zona gris si los números de línea no se ven) situado a la izquierda de la línea ejecutable donde desea establecer el punto de interrupción. Por ejemplo, haga clic en la línea número 3 de plotRand.m para agregar un punto de interrupción en esa línea.

plotRand script with a red breakpoint at line 3

Cuando ejecute el archivo, MATLAB se detendrá en la línea de código indicada por el punto de interrupción. La línea en la que MATLAB se detiene no se ejecuta hasta después de continuar ejecutando su código.

Por ejemplo, con el archivo plotRand.m abierto en el editor, haga clic en el botón Run de la pestaña Editor. MATLAB ejecuta plotRand.m empezando en la línea 1 y se detiene antes de ejecutar la línea 3.

Cuando MATLAB se detiene, se producen varios cambios:

  • El botón Run de la pestaña Editor o Live Editor pasa a ser el botón Continue.

  • La línea de comandos de la ventana de comandos cambia a K>>, lo que indica que MATLAB se encuentra en modo de depuración y que el teclado tiene el control.

  • MATLAB indica la línea en la que se ha detenido con una flecha y un resaltado verde.

    plotRand script with a breakpoint at line 3 and a green arrow and green highlighting on line 3, indicating that MATLAB is paused at line 3

Sugerencia

Se recomienda evitar modificar un archivo mientras MATLAB esté detenido. Los cambios que se realizan mientras MATLAB está en pausa no se ejecutan hasta después de que MATLAB termine de ejecutar el código y se reanude la ejecución del código.

Para seguir ejecutando el código, haga clic en el botón Continue. MATLAB continúa ejecutando el archivo hasta que llegue al final de este o a un punto de interrupción. Para continuar ejecutando el código línea por línea, en las pestañas Editor o Live Editor, haga clic en Step. MATLAB ejecuta la línea actual en la que se ha detenido y, después, se detiene en la línea siguiente.

Para obtener más información acerca de los diferentes tipos de puntos de interrupción y cómo configurarlos, borrarlos y desactivarlos, consulte Set Breakpoints.

Finalizar la sesión de depuración

Después de identificar un problema, para finalizar la sesión de depuración, vaya a la pestaña Editor o Live Editor y haga clic en Stop. Después de la depuración, la línea de comandos habitual de >> de la ventana de comandos reaparece en lugar de la línea de comandos de K>>. Después, no podrá acceder más a la pila de llamadas a funciones.

Para evitar confusiones, asegúrese de finalizar su sesión de depuración cada vez que termine de depurar. Si realiza cambios en un archivo y lo guarda durante la depuración, MATLAB finaliza la sesión de depuración. Si MATLAB deja de responder al ponerse en pausa, pulse Ctrl+C para finalizar la depuración.

Depurar usando el panel del depurador (Debugger Panel) de MATLAB Online

En MATLAB Online™, puede usar Debugger Panel para gestionar puntos de interrupción y desplazarse por la pila de llamadas a funciones durante la depuración.

De forma predeterminada, Debugger Panel se abre de manera automática cuando MATLAB entra en modo de depuración. Para abrir Debugger Panel manualmente, vaya a la pestaña Editor o Live Editor y, en la sección Analyze, haga clic en Debugger. De manera alternativa, puede abrir el panel usando el botón Open more panels (three-dot icon) en una barra lateral. De forma predeterminada, Debugger Panel se abre en el lado derecho del escritorio. Para ocultar Debugger Panel, haga clic en el icono del depurador de la barra lateral.

Debugger panel showing a Breakpoints section and a Function call stack section. The Breakpoints section shows Pause on Errors selected, as well as three enabled breakpoints in the plotRand.m file. The Function call stack section shows that the debugger is paused at line 9 of plotRand.m.

La sección Breakpoints del panel enumera los puntos de interrupción en todos los archivos de código de MATLAB. Los cuatro primeros puntos de interrupción de la sección, Pause on Errors, Pause on Warnings, Pause on NaN or Inf y Pause on Unsuppressed Output, son puntos de interrupción de error. Cuando activa uno de estos puntos de interrupción, MATLAB se pone en pausa en cualquier línea de cualquier archivo si tiene lugar la condición de error especificada. Los puntos de interrupción restantes se agrupan por archivo.

Para cada punto de interrupción de la lista, puede realizar estas acciones:

  • Activar o desactivar el punto de interrupción: seleccione la casilla de verificación junto al punto de interrupción para activar el punto de interrupción y desactive la casilla de verificación para desactivar el punto de interrupción.

  • Borrar el punto de interrupción: seleccione el punto de interrupción y, en la parte superior del panel del depurador, haga clic en el botón Clear para borrar el punto de interrupción. Para borrar todos los puntos de interrupción, haga clic en drop-down arrow junto al botón Clear y seleccione Clear All Breakpoints. Los puntos de interrupción de error no se pueden borrar.

  • Ir a un punto de interrupción en un archivo: haga clic en el número de línea con hipervínculo a la derecha del punto de interrupción para abrir el archivo e ir a la línea de código que contiene el punto de interrupción.

  • Establecer o modificar condiciones de un punto de interrupción: haga clic con el botón secundario en el punto de interrupción y seleccione Set/Modify Condition para introducir o modificar una condición para el punto de interrupción seleccionado.

Para obtener más información acerca de los puntos de interrupción, consulte Set Breakpoints.

La sección Function call stack muestra la lista de las funciones de MATLAB que se han ejecutado antes de detenerse en la línea actual. Las funciones se muestran por orden, con el script o la función actual en la que se ha detenido MATLAB en la parte superior de la lista y la primera llamada al script o la función en la parte inferior de la lista. Para cada función de la pila de llamadas, hay un área de trabajo correspondiente. Para ver el área de trabajo de una función de la pila de llamadas a funciones, seleccione esa función en la lista. Para obtener más información sobre la pila de llamadas a funciones, consulte Pila de llamadas a funciones.

Para deshabilitar la apertura automática de Debugger Panel, haga clic en el botón Debugger Configuration en la parte superior izquierda de Debugger Panel y desactive la opción Open Debugger panel automatically. De forma alternativa, puede desactivar esta opción en la página Editor/Debugger > MATLAB de la ventana Preferences.

Depurar usando atajos de teclado o funciones

Puede efectuar la mayoría de las acciones de depuración empleando atajos de teclado o funciones de la ventana de comandos. Esta tabla describe las acciones de depuración y los atajos de teclado correspondientes, así como las funciones que puede utilizar para realizarlas.

AcciónDescripciónAtajo de tecladoFunción

Continue

Sigue ejecutando el archivo hasta llegar al final o hasta que se encuentre otro punto de interrupción.

F5

dbcont

Step

Ejecuta la línea actual de código.

F10

(Mayús.+Comando+O en sistemas macOS)

dbstep

Step In

Ejecuta la línea actual de código y, si la línea contiene una llamada a otra función, entra en la función en cuestión.

F11

(Mayús.+Comando+I en sistemas macOS)

dbstep in

Step Out

Después de entrar, ejecuta el resto de la función llamada, sale de ella y hace una pausa.

Mayús.+F11

(Mayús.+Comando+U en sistemas macOS)

dbstep out

Stop

Finaliza la sesión de depuración.

Mayús.+F5

dbquit

Set breakpoint

Establece un punto de interrupción en la línea actual de no haber puntos de interrupción.

F12

dbstop

Clear breakpoint

Borra el punto de interrupción de la línea actual.

F12

dbclear

Consulte también

Temas

Sitios web externos