Un depurador (en anglès, debugger ), és un programa que permet depurar o netejar els errors d'un altre programa informàtic. El codi a ser examinat pot alternativament estar executant-se en un simulador de conjunt d'instruccions (ISS), una tècnica que permet una gran potència en la seva capacitat de detenir-se quan són oposades condicions específiques però serà típicament una mica més lent que executant el codi directament en el processador adequat. Alguns depuradors ofereixen dues maneres d'operació - la simulació parcial o completa, per limitar aquest impacte.
Si és un depurador de nivell de font o depurador simbòlic, comunament ara vist en entorns de desenvolupament integrats, quan el programa "peta" o aconsegueix una condició predefinida, la depuració típicament mostra la posició en el codi original. Si és un depurador de baix nivell o un depurador de llenguatge de màquina, mostra la línia en el font desassemblat (tret que també tingui accés en línia al codi font original i pugui exhibir la secció apropiada del codi de l'assemblador o del compilador). Una "petada" succeeix quan el programa no pot continuar normalment a causa d'un error de programació. Per exemple, el programa va poder haver intentat usar una instrucció no disponible en la versió actual del CPU o haver intentat tenir accés a memòria protegida o no disponible.
Típicament, els depuradors també ofereixen funcions més sofisticades com executar un programa pas a pas (un pas o animació del programa), parar el programa (breacking), és a dir, pausar el programa per examinar l'estat actual en cert esdeveniment o instrucció especificada per mitjà d'un breakpoint, i el seguiment de valors d'algunes variables. Alguns depuradors tenen la capacitat de modificar l'estat del programa mentre que s'està executant, en comptes de simplement observar-lo. També és possible continuar l'execució en una posició diferent al programa a través d'un bypass en una petada o error lògic.
La importància d'un bon depurador no pot ser exagerada. De fet, l'existència i la qualitat de tal eina per a un llenguatge i una plataforma donades sovint pot ser el factor de decisió en el seu ús, fins i tot si un altre llenguatge/plataforma és més adequat per a la tasca. L'absència d'un depurador, una vegada estant acostumat a usar-ne, s'ha dit que "fa que vostè se senti com un home cec en una cambra fosca buscant un gat negre que no està allí".[1] No obstant això, el programari pot (i sovint) es comporta diferent executant-se sota un depurador que normalment, a causa dels canvis inevitables que la presència d'un depurador farà a la temporització interna d'un programari. Com a resultat, fins i tot amb una bona eina de depuració, és sovint molt difícil rastrejar problemes de temps d'execució en complexos sistemes distribuïts amb múltiples fils.
La mateixa funcionalitat que fa a un depurador útil per eliminar errors permet ser usat com a eina de craqueig de programari per evadir la protecció anticòpia, la gestió digital de drets, i altres característiques de protecció de programari. Sovint també és útil com a eina general de verificació de proves, cobertura d'errors, o analitzador de rendiment, especialment si són mostrades les longituds de trajectòria d'instrucció.
La majoria dels motors de depuració actuals, com el gdb i dbx proporcionen interfícies basades en línia d'ordres. Els frontals de depuració són extensions populars als motors de depuració, que proporcionen integració a l'IDE, animació del programa, i característiques de visualització. Alguns depuradors dels primers mainframes com l'Oliver i el SIMON van proporcionar aquesta mateixa funcionalitat per l'IBM System/360 i posteriors sistemes operatius, fins als anys 1970.