Un programma funziona quando in ogni condizione restituisce l'output atteso. Programmi che si piantano (invece di restituire messaggi di errore) se l'utente inserisce valori sbagliati o che eseguono all'infinito senza interagire con l'utente non funzionano.

Per assicurarsi che un programma funzioni si procede, dopo averlo scritto, con opportune fasi di testing. In caso di software critici si procede anche ad effettuare una verifica (si controlla, con opportune dimostrazioni logiche, tutto il funzionamento del programma), ma è un'operazione molto complessa e costosa.

Tipi di errore

Ci sono 3 tipi di errori funzionali, ovvero che intaccano il funzionamento del programma e lo portano a comportarsi come non deve:

Tecniche di debugging

GDB (GNU Project Debugger)

GDB è un tool di debugging utilizzabile da linea di comando, ma che si trova integrato sia in Eclipse che in Code::Blocks.