MATLAB Language
Depuración
Buscar..
Sintaxis
- dbstop en el archivo en la ubicación si la expresión
Parámetros
Parámetro | Detalles |
---|---|
expediente | Nombre del archivo .m (sin extensión), por ejemplo, fit . Este parámetro es (Requerido) a menos que se establezcan tipos especiales de punto de interrupción condicional, como dbstop if error o dbstop if naninf . |
ubicación | Número de línea donde se debe colocar el punto de interrupción. Si la línea especificada no contiene código ejecutable, el punto de interrupción se colocará en la primera línea válida después de la especificada. |
expresión | Cualquier expresión o combinación de las mismas que se evalúe como un valor booleano. Ejemplos: ind == 1 , nargin < 4 && isdir('Q:\') . |
Trabajando con Breakpoints
Definición
En el desarrollo de software, un punto de interrupción es un lugar para detener o pausar intencionalmente un programa, implementado para fines de depuración.
Más generalmente, un punto de interrupción es un medio para adquirir conocimiento sobre un programa durante su ejecución. Durante la interrupción, el programador inspecciona el entorno de prueba (registros de propósito general, memoria, registros, archivos, etc.) para averiguar si el programa está funcionando como se esperaba. En la práctica, un punto de interrupción consiste en una o más condiciones que determinan cuándo se debe interrumpir la ejecución de un programa.
-Wikipedia
Puntos de interrupción en MATLAB
Motivación
En MATLAB, cuando la ejecución se detiene en un punto de interrupción, las variables existentes en el área de trabajo actual (también conocido como alcance ) o cualquiera de las áreas de trabajo que llaman, se pueden inspeccionar (y generalmente también se pueden modificar).
Tipos de puntos de ruptura
MATLAB permite a los usuarios colocar dos tipos de puntos de interrupción en archivos .m
:
- Puntos de interrupción estándar (o "no restringidos ") (mostrados en rojo): pausa la ejecución cada vez que se alcanza la línea marcada.
- Puntos de interrupción "condicionales" (mostrados en amarillo): pausa la ejecución cada vez que se alcanza la línea marcada Y la condición definida en el punto de interrupción se evalúa como
true
.
Colocando puntos de ruptura
Ambos tipos de puntos de interrupción se pueden crear de varias maneras:
Usando la GUI del editor de MATLAB, haga clic derecho en la línea horizontal al lado del número de línea.
Usando el comando
dbstop
:% Create an unrestricted breakpoint: dbstop in file at location % Create a conditional breakpoint: dbstop in file at location if expression % Examples and special cases: dbstop in fit at 99 % Standard unrestricted breakpoint. dbstop in fit at 99 if nargin==3 % Standard conditional breakpoint. dbstop if error % This special type of breakpoint is not limited to a specific file, and % will trigger *whenever* an error is encountered in "debuggable" code. dbstop in file % This will create an unrestricted breakpoint on the first executable line % of "file". dbstop if naninf % This special breakpoint will trigger whenever a computation result % contains either a NaN (indicates a division by 0) or an Inf
Uso de métodos abreviados de teclado: la tecla predeterminada para crear un punto de interrupción estándar en Windows es F12 ; la clave por defecto para los puntos de interrupción condicionales no está definido.
Deshabilitar y volver a habilitar los puntos de interrupción
Deshabilite un punto de interrupción para ignorarlo temporalmente: los puntos de interrupción deshabilitados no pausan la ejecución. La desactivación de un punto de interrupción se puede hacer de varias maneras:
- Haga clic con el botón derecho en el círculo rojo / amarillo del punto de interrupción> Deshabilitar el punto de interrupción.
- Clic izquierdo en un punto de quiebre condicional (amarillo).
- En la pestaña Editor> Puntos de interrupción> Habilitar \ Deshabilitar.
Eliminar puntos de interrupción
Todos los puntos de interrupción permanecen en un archivo hasta que se eliminen, ya sea de forma manual o automática. Los puntos de interrupción se borran automáticamente al finalizar la sesión de MATLAB (es decir, al finalizar el programa). La eliminación manual de los puntos de interrupción se realiza de una de las siguientes maneras:
Usando el comando
dbclear
:dbclear all dbclear in file dbclear in file at location dbclear if condition
Haga clic con el botón izquierdo en un icono de punto de interrupción estándar o un icono de punto de interrupción condicional desactivado.
Haga clic derecho en cualquier punto de interrupción> Borrar punto de interrupción.
En la pestaña Editor> Puntos de interrupción> Borrar todo.
En versiones anteriores a R2015b de MATLAB, usando el comando
clear
.
Reanudar la ejecución
Cuando la ejecución se detiene en un punto de interrupción, hay dos formas de continuar ejecutando el programa:
Ejecute la línea actual y vuelva a hacer una pausa antes de la línea siguiente.
F10 1 en el Editor,
dbstep
en la ventana de comandos, "Paso" en Ribbon> Editor> DEBUG.Ejecutar hasta el siguiente punto de interrupción (si no hay más puntos de interrupción, la ejecución continúa hasta el final del programa).
F12 1 en el Editor,
dbcont
en la ventana de comandos, "Continuar" en Ribbon> Editor> DEBUG.
1 - por defecto en Windows.
Depuración de código Java invocado por MATLAB
Visión general
Para depurar las clases Java que se llaman durante la ejecución de MATLAB, es necesario realizar dos pasos:
- Ejecute MATLAB en modo de depuración JVM.
- Adjunte un depurador de Java al proceso MATLAB.
Cuando MATLAB se inicia en el modo de depuración JVM, aparece el siguiente mensaje en la ventana de comandos:
JVM is being started with debugging enabled.
Use "jdb -connect com.sun.jdi.SocketAttach:port=4444" to attach debugger.
Final de MATLAB
Windows:
Cree un acceso directo al ejecutable de MATLAB ( matlab.exe
) y agregue la bandera -jdb
al final como se muestra a continuación:
Al ejecutar MATLAB utilizando este acceso directo, se habilitará la depuración de JVM.
Alternativamente, el archivo java.opts
se puede crear / actualizar. Este archivo se almacena en "matlab-root \ bin \ arch", donde "matlab-root" es el directorio de instalación de MATLAB y "arch" es la arquitectura (por ejemplo, "win32").
Se debe agregar lo siguiente en el archivo:
-Xdebug
-Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n
Final del depurador
IntelliJ IDEA
Adjuntar este depurador requiere la creación de una configuración de "depuración remota" con el puerto expuesto por MATLAB:
Entonces se inicia el depurador:
Si todo funciona como se esperaba, aparecerá el siguiente mensaje en la consola: