MATLAB Language
Debug
Ricerca…
Sintassi
- dbstop nel file nella posizione se espressione
Parametri
Parametro | Dettagli |
---|---|
file | Nome del .m file (senza estensione), ad esempio fit . Questo parametro è (obbligatorio) a meno che non si imposti tipi speciali di breakpoint condizionale come dbstop if error o dbstop if naninf . |
Posizione | Numero di riga in cui deve essere inserito il punto di interruzione. Se la riga specificata non contiene codice eseguibile, il punto di interruzione verrà posizionato sulla prima riga valida dopo quella specificata. |
espressione | Qualsiasi espressione o combinazione di questi che valuti un valore booleano. Esempi: ind == 1 , nargin < 4 && isdir('Q:\') . |
Lavorare con i punti di interruzione
Definizione
Nello sviluppo del software, un punto di interruzione è un punto di arresto o di pausa intenzionale in un programma, creato per scopi di debug.
Più in generale, un punto di interruzione è un mezzo per acquisire conoscenze su un programma durante la sua esecuzione. Durante l'interruzione, il programmatore ispeziona l'ambiente di test (registri di uso generale, memoria, registri, file, ecc.) Per scoprire se il programma funziona come previsto. In pratica, un breakpoint consiste in una o più condizioni che determinano quando l'esecuzione di un programma deve essere interrotta.
-Wikipedia
Punti di interruzione in MATLAB
Motivazione
In MATLAB, quando l'esecuzione si ferma su un punto di interruzione, le variabili esistenti nello spazio di lavoro corrente (noto anche come scope ) o in qualsiasi area di lavoro chiamante possono essere ispezionate (e di solito anche modificate).
Tipi di punti di interruzione
MATLAB consente agli utenti di inserire due tipi di punti di interruzione nei file .m
:
- Punti di interruzione standard (o " non limitati ") (mostrati in rosso) - sospendono l'esecuzione ogni volta che viene raggiunta la linea evidenziata.
- Punti di rottura "condizionali" (indicati in giallo) - sospendono l'esecuzione ogni volta che viene raggiunta la linea contrassegnata E la condizione definita nel punto di interruzione viene valutata come
true
.
Posizionamento dei punti di interruzione
Entrambi i tipi di punti di interruzione possono essere creati in diversi modi:
Utilizzando la GUI di MATLAB Editor, facendo clic con il pulsante destro sulla linea orizzontale accanto al numero di riga.
Utilizzando il 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
Utilizzo delle scorciatoie da tastiera: la chiave predefinita per la creazione di un punto di interruzione standard su Windows è F12 ; la chiave predefinita per i punti di interruzione condizionali non è impostata .
Disabilitare e riattivare i punti di interruzione
Disabilitare un punto di interruzione per ignorarlo temporaneamente: i punti di interruzione disabilitati non interrompono l'esecuzione. La disattivazione di un punto di interruzione può essere eseguita in diversi modi:
- Fare clic con il pulsante destro del mouse sul cerchio del punto di interruzione rosso / giallo> Disattiva punto di interruzione.
- Fare clic con il tasto sinistro su un punto di interruzione condizionale (giallo).
- Nella scheda Editor> Punti di interruzione> Abilita \ Disabilita.
Rimozione dei punti di interruzione
Tutti i punti di interruzione rimangono in un file fino a quando non vengono rimossi, manualmente o automaticamente. I punti di interruzione vengono cancellati automaticamente quando si termina la sessione MATLAB (cioè terminando il programma). La cancellazione manuale dei punti di interruzione avviene in uno dei seguenti modi:
Utilizzando il comando
dbclear
:dbclear all dbclear in file dbclear in file at location dbclear if condition
Fare clic con il pulsante sinistro su un'icona di punto di interruzione standard o un'icona di punto di interruzione condizionale disabilitata.
Fare clic con il tasto destro su qualsiasi punto di interruzione> Cancella punto di interruzione.
Nella scheda Editor> Punti di interruzione> Cancella tutto.
Nelle versioni pre-R2015b di MATLAB, utilizzando il comando
clear
.
Ripresa dell'esecuzione
Quando l'esecuzione viene messa in pausa in un punto di interruzione, esistono due modi per continuare l'esecuzione del programma:
Esegui la riga corrente e metti nuovamente in pausa prima della riga successiva.
F10 1 nell'Editor,
dbstep
nella finestra di comando, "Passo" in Barra multifunzione> Editor> DEBUG.Esegui fino al prossimo punto di interruzione (se non ci sono più punti di interruzione, l'esecuzione procede fino alla fine del programma).
F12 1 nell'editor,
dbcont
nella finestra di comando, "Continua" in Barra multifunzione> Editor> DEBUG.
1 - predefinito su Windows.
Debug di codice Java richiamato da MATLAB
Panoramica
Per eseguire il debug delle classi Java richiamate durante l'esecuzione di MATLAB, è necessario eseguire due passaggi:
- Esegui MATLAB in modalità di debug JVM.
- Allegare un debugger Java al processo MATLAB.
Quando MATLAB viene avviato in modalità di debug JVM, viene visualizzato il seguente messaggio nella finestra di comando:
JVM is being started with debugging enabled.
Use "jdb -connect com.sun.jdi.SocketAttach:port=4444" to attach debugger.
Fine MATLAB
Finestre:
Creare un collegamento all'eseguibile MATLAB ( matlab.exe
) e aggiungere il flag -jdb
alla fine come mostrato di seguito:
Quando si esegue MATLAB utilizzando questo collegamento, verrà abilitato il debug JVM.
In alternativa, il file java.opts
può essere creato / aggiornato. Questo file è memorizzato in "matlab-root \ bin \ arch", dove "matlab-root" è il directoy di installazione MATLAB e "arch" è l'architettura (ad esempio "win32").
Il seguente dovrebbe essere aggiunto nel file:
-Xdebug
-Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n
Fine del debugger
IntelliJ IDEA
L'associazione di questo debugger richiede la creazione di una configurazione di "debug remoto" con la porta esposta da MATLAB:
Quindi viene avviato il debugger:
Se tutto funziona come previsto, verrà visualizzato il seguente messaggio nella console: