Breakpoint
# Breakpoint

Nell'ambito dello sviluppo del software, un breakpoint è un punto di interruzione nel codice di un programma, normalmente usato per scopi di debugging. Si tratta di uno strumento che consente di interrompere l'esecuzione di un programma in punto desiderato oppure quando si verificano determinate condizioni, allo scopo di acquisire informazioni sul programma stesso. In particolare, il programmatore può analizzare lo stato di file di log, variabili o registri al punto in cui il programma è stato interrotto, per verificare se il programma funziona come previsto o, in caso contrario, per risalire alla causa del malfunzionamento (bug).

## Condizioni per un breakpoint

In pratica, un breakpoint è definito in base a una serie di condizioni che determinano quando il programma debba essere interrotto.

La versione "classica" del breakpoint, quella più semplice, interrompe il programma immediatamente prima che venga eseguita una certa istruzione specificata dal programmatore, presente in una certa riga del codice.

In altri casi (quelli più comuni), l'esecuzione del programma può essere interrotta:

* quando si tenta di leggere o scrivere su una determinata variabile o un'area di memoria (watchpoint);
* quando una variabile è modificata così da assumere un valore ben definito (watchpoint);
* quando è lanciata un'eccezione (in linguaggi quali C, Java, ecc.);
* all'entrata o all'uscita di una certa procedura o metodo.

Queste condizioni, semplici di per sé, facilitano notevolmente il compito del programmatore. Ad esempio esse rendono possibile interrompere il programma solo quando necessario, cioè quando è superfluo controllare la validità dello stato delle variabili nel programma quando queste assumono determinati valori (che già a priori si sa che sono corretti).

## Caratteristiche

I tipi di breakpoint utilizzabili per il controllo di un programma dipendono dal linguaggio utilizzato e soprattutto dall'IDE. IDE diversi forniscono tipi di breakpoint con caratteristiche sempre più avanzate e precise, per facilitare l'operazione di debugging.

Nei linguaggi multithreaded, in genere è possibile scegliere se un breakpoint debba interrompere solo il thread coinvolto o anche gli altri threads.

