Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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 unbreakpoint, 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í".1 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 laslongitudes 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 elIBM System/360 y posteriores sistemas operativos, hasta los años 1970.
Índice
Dependencia del lenguaje
Protección de memoria
Soporte de hardware para la depuración
Uso
Información de depuración
Otros usos
Efectos secundarios
Ejemplos de depuradores
Véase también
Referencias
Protección de memoria
Algunos depuradores también incorporan protección de memoria para evitar violaciones del almacenamiento tales como
desbordamiento de búfer. Esto puede ser extremadamente importante en los ambientes de procesamiento de transacciones donde la
memoria es dinámicamente asignada desde "pools" de memoria en una base de tarea por tarea.
Soporte en hardware para ejecutar un programa paso a paso, tal como el trap flag.
Un conjunto de instrucciones conformado con los requerimientos de virtualización de Popek y Goldberg, hace más
fácil escribir el software depuración que corre en el mismo CPU que el software que está siendo depurado; tal CPU
puede ejecutar los bucles internos del programa bajo prueba a velocidad completa, y todavía permanecer bajo
control del depurador.
In-system programming (ISP) (programación en sistema) permite a un depurador de hardware externo reprogramar
un sistema bajo prueba, por ejemplo, adición o eliminación de instrucciones de puntos de ruptura (breakpoints).
Muchos sistemas con tal soporte de ISP también tienen otro soporte de hardware de depuración.
Soporte de hardware para breakpoints de código y datos, tales como comparadores de direcciones y comparadores
de valores de datos, o con considerablemente más trabajo implicado, hardware de fallo de página.
El acceso de JTAG a las interfaces de depuración de hardware tales como en procesadores de la arquitectura ARM
o usando el conjunto de comandos Nexus. Los procesadores usados en sistemas empotrados típicamente tienen
extenso soporte de depuración JTAG.
Los microcontroladores con tan poco como seis pines necesitan usar sustitutos de bajo conteo de pines para JTAG,
tal como BDM, Spy-Bi-Wire, o DebugWire en el Atmel AVR. DebugWire, por ejemplo, usa señalización bidireccional
en el pin del RESET.
Uso
El depurador lanza el programa a depurar. Éste se ejecuta normalmente hasta que el depurador detiene su ejecución, permitiendo al
usuario examinar la situación.
El depurador permite detener el programa en:
Información de depuración
Para poder aprovechar todas las posibilidades de depuración es necesario que, al compilar el programa a depurar, se indique al
compilador que debe incluir instrucciones e información extra para la depuración del código. Dicha información extra consiste
básicamente en la correspondencia entre las instrucciones del código ejecutable y las instrucciones del código fuente que las originan,
así como información sobre nombres devariables y funciones.
Aun si no se incluye esta información de depuración, sigue siendo posible monitorizar la ejecución del programa. Sin embargo,
resultará más difícil y compleja debido a esa falta de información del contexto en el que se ejecuta el programa.
Otros usos
Un depurador también puede usarse para realizar ingeniería inversa o evitar protecciones de copia. Mediante el uso del depurador se
puede conocer el funcionamiento interno del programa examinado, ayudando al proceso de ingeniería inversa o permitiendo
desarrollar técnicas para evadir las restricciones impuestas por el programa.
Efectos secundarios
Es importante notar que un programa que está siendo depurado puede presentar un comportamiento diferente a si se ejecuta en
solitario debido a que el depurador cambia ligeramente los tiempos internos del programa. Estos cambios en los tiempos de ejecución
afectan especialmente a complejossistemas distribuidos.
Ejemplos de depuradores
Visual DuxDebugger — Debugger Disassembler for Windows 64-bit
GNU Debugger (gdb)
SoftICE
OllyDbg
Trw2000
Ida Pro
Cheat Engine
Véase también
Depuración de programas
Error de software
Lenguaje ensamblador
Lenguaje ensamblador x86
Referencias
1. «Copia archivada» (https://web.archive.org/web/20100922172437/http://www .berniecode.com/blog/2007/03/08/how-t
o-debug-javascript-with-visual-web-developer-express/)
. Archivado desde el original (http://www.berniecode.com/blo
g/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/)
el 22 de septiembre de 2010. Consultado
el 23 de diciembre de 2010.
Obtenido de «https://es.wikipedia.org/w/index.php?title=Depurador&oldid=109535964
»
Esta página se editó por última vez el 26 jul 2018 a las 09:48.
El texto está disponible bajo laLicencia Creative Commons Atribución Compartir Igual 3.0 ; pueden aplicarse cláusulas
adicionales. Al usar este sitio, usted acepta nuestrostérminos de uso y nuestra política de privacidad.
Wikipedia® es una marca registrada de laFundación Wikimedia, Inc., una organización sin ánimo de lucro.