Está en la página 1de 2

Depurador

Ir a la navegaciónIr a la búsqueda
Este artículo o sección necesita referencias que aparezcan en una publicación
acreditada.
Este aviso fue puesto el 19 de abril de 2013.

Depurador

Parte de herramienta de programación

Información general

Tipo de programa Herramienta de programación

[editar datos en Wikidata]

Un depurador (en inglés: debugger) es un programa que se utiliza para detectar e


identificar los errores en un software (el programa "objetivo") y, por lo tanto, los
desarrolladores pueden encontrar los fallos en el programa de forma más fácil,
facilitando el proceso de corrección1. El código a ser examinado puede
alternativamente estar corriendo en un simulador de conjunto de
instrucciones (ISS), una técnica que permite gran potencia en su capacidad de
detenerse cuando son encontradas condiciones específicas pero será típicamente
algo más lento que ejecutando el código directamente en el apropiado (o el
mismo) procesador. Algunos depuradores ofrecen dos modos de operación, la
simulación parcial o completa, para limitar este impacto.
Si es un depurador de nivel de fuente o depurador simbólico, comúnmente
ahora visto en entornos de desarrollo integrados, cuando el programa "se estrella"
o alcanza una condición predefinida, la depuración típicamente muestra la
posición en el código original. Si es un depurador de bajo nivel o un depurador
de lenguaje de máquina, muestra la línea en el fuente desensamblado (a menos
que también tenga acceso en línea al código fuente original y pueda exhibir la
sección apropiada del código del ensamblador o del compilador). Un
"estrellamiento" sucede cuando el programa no puede continuar normalmente
debido a un error de programación. Por ejemplo, el programa pudo haber
intentado usar una instrucción no disponible en la versión actual del CPU o haber
intentado tener acceso a memoria protegida o no disponible.
Típicamente, los depuradores también ofrecen funciones más sofisticadas tales
como correr un programa paso a paso (un paso o animación del programa), parar
el programa (breaking), es decir, pausar el programa para examinar el estado
actual en cierto evento o instrucción especificada por medio de un breakpoint, y el
seguimiento de valores de algunas variables. Algunos depuradores tienen la
capacidad de modificar el estado del programa mientras que está corriendo, en
vez de simplemente observarlo. También es posible continuar la ejecución en una
posición diferente en el programa bypaseando un estrellamiento o error lógico.
La importancia de un buen depurador no puede ser exagerada. De hecho, la
existencia y la calidad de tal herramienta para un lenguaje y una plataforma dadas
a menudo puede ser el factor de decisión en su uso, incluso si otro
lenguaje/plataforma es más adecuado para la tarea.[cita requerida] La ausencia de un
depurador, una vez estando acostumbrado a usar uno, se ha dicho que "hace que
usted se sienta como un hombre ciego en un cuarto oscuro buscando un gato
negro que no está allí".2 Sin embargo, el software puede (y a menudo) se
comporta diferentemente corriendo bajo un depurador que normalmente, debido a
los cambios inevitables que la presencia de un depurador hará a la temporización
interna de un programa de software. Como resultado, incluso con una buena
herramienta de depuración, es a menudo muy difícil rastrear problemas de tiempo
de corrida en complejos sistemas distribuidos con múltiples hilos.
La misma funcionalidad que hace a un depurador útil para eliminar errores permite
ser usado como herramienta de craqueo de software para evadir la protección
anticopia, la gestión digital de derechos, y otras características de protección de
software. A menudo también lo hace útil como herramienta general de verificación
de pruebas, cobertura de fallas, o analizador de desempeño, especialmente si son
mostradas las longitudes de trayectoria de instrucción.
La mayoría de los motores de depuración actuales, tales
como gdb y dbx proporcionan interfaces basadas en línea de comandos. Los
frontales de depuración son extensiones populares a los motores de depuración,
que proporcionan integración al IDE, animación del programa, y características de
visualización. Algunos depuradores de los primeros mainframes tales como
el Oliver y el SIMON proporcionaron esta misma funcionalidad para el IBM
System/360 y posteriores sistemas operativos, hasta los años 1970.

También podría gustarte