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 .

Diversi simboli di breakpoint nella GUI

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:

  1. Esegui MATLAB in modalità di debug JVM.
  2. 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:

inserisci la descrizione dell'immagine qui

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:

Passaggio 1: creazione di una configurazione di debug

Quindi viene avviato il debugger:

Passaggio 2: avvio del debugger

Se tutto funziona come previsto, verrà visualizzato il seguente messaggio nella console:

Registra l'output quando tutto funziona



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow