Main Content

La traducción de esta página está obsoleta. Haga clic aquí para ver la última versión en inglés.

Depurar archivos de código de MATLAB

Desde la versión R2021b. Reemplaza Debug a MATLAB Program (R2021a) y Debug Code in the Live Editor (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 dos, 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 dos.

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

Depurar usando el botón Run to Here

Si quiere mostrar el estado de una sola variable, es útil mostrar la salida. Para analizar el estado de todas las variables del área de trabajo, ejecute el archivo de código y, a continuación, ponga en pausa el proceso antes de ejecutar la línea de código especificada.

Para ejecutar código en 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 encontrar un punto de interrupción.

Nota

En funciones y clases, el botón Run to Here solo está disponible al depurar.

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

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

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 two, indicating that MATLAB is paused at line two

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 situado a la izquierda de la línea de código hasta la que desea continuar ejecutando.

Para seguir ejecutando el código línea por línea, en la pestaña Editor o Live Editor, haga clic en Step. MATLAB ejecuta la línea actual en la que se ha detenido y luego se detiene en la siguiente línea.

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

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. Para desactivar las sugerencias de datos, vaya a la pestaña View y haga clic en el botón de desactivación de Datatips.

plotRand script paused at line two with a data tip showing the 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

Al hacer clic en el botón Pause, puede hacer que MATLAB se ponga en pausa en un archivo fuera de su propio código.

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 en la que desea entrar. MATLAB muestra el botón solo si la línea contiene una llamada a otra función. 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 está disponible para funciones definidas por el usuario y scripts. Para que el botón esté activo para funciones de MathWorks®, 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, borre la opción Only show contextual Step in button for user-defined functions.

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 Only show contextual Step in button for user-defined functions, 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 la zona gris situada a la izquierda de la línea ejecutable donde desea establecer el punto de interrupción. Por ejemplo, haga clic en la zona junto a la línea tres de plotRand.m para agregar un punto de interrupción en dicha línea.

plotRand script with a red breakpoint at line three

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 uno y se detiene antes de ejecutar la línea tres.

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 three and a green arrow and green highlighting on line three, indicating that MATLAB is paused at line three

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, a continuación, 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 normal 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 los accesos directos del teclado o las funciones

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

AcciónDescripciónAcceso directo del 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

Establecer un punto de interrupción

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

F12

dbstop

Borrar punto de interrupción

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

F12

dbclear

Temas relacionados