Debugger, depurador
Posted: Wed Jan 13, 2010 5:39 pm
Un depurador (en inglés, debugger), es un programa que permite depurar o limpiar los errores de otro programa informático.
Uso :
Al iniciarse la depuración, 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:
Un punto determinado mediante un punto de ruptura.
Un punto determinado bajo ciertas condiciones mediante un punto de ruptura condicional.
Un momento determinado cuando se cumplan ciertas condiciones.
Un momento determinado a petición del usuario.
Durante esa interrupción, el usuario puede:
Examinar y modificar la memoria y las variables del programa.
Examinar el contenido de los registros del procesador.
Examinar la pila de llamadas que han desembocado en la situación actual.
Cambiar el punto de ejecución, de manera que el programa continúe su ejecución en un punto diferente al punto en el que fue detenido.
Ejecutar instrucción a instrucción.
Ejecutar partes determinadas del código, como el interior de una función, o el resto de código antes de salir de una función.
El depurador depende de la arquitectura y sistema en el que se ejecute, por lo que sus funcionalidades cambian de un sistema a otro. Aquà se han mostrado las más comunes.
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 de variables y funciones.
Aún 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 sistemas complejos multihebra o sistemas distribuidos.
Ejemplos de depuradores
GNU Debugger (gdb) http://es.wikipedia.org/wiki/GNU_Debugger
SoftICE http://es.wikipedia.org/wiki/SoftICE
OllyDbg
Trw2000
Ida Pro
Fuente: Wikipedia
Uso :
Al iniciarse la depuración, 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:
Un punto determinado mediante un punto de ruptura.
Un punto determinado bajo ciertas condiciones mediante un punto de ruptura condicional.
Un momento determinado cuando se cumplan ciertas condiciones.
Un momento determinado a petición del usuario.
Durante esa interrupción, el usuario puede:
Examinar y modificar la memoria y las variables del programa.
Examinar el contenido de los registros del procesador.
Examinar la pila de llamadas que han desembocado en la situación actual.
Cambiar el punto de ejecución, de manera que el programa continúe su ejecución en un punto diferente al punto en el que fue detenido.
Ejecutar instrucción a instrucción.
Ejecutar partes determinadas del código, como el interior de una función, o el resto de código antes de salir de una función.
El depurador depende de la arquitectura y sistema en el que se ejecute, por lo que sus funcionalidades cambian de un sistema a otro. Aquà se han mostrado las más comunes.
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 de variables y funciones.
Aún 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 sistemas complejos multihebra o sistemas distribuidos.
Ejemplos de depuradores
GNU Debugger (gdb) http://es.wikipedia.org/wiki/GNU_Debugger
SoftICE http://es.wikipedia.org/wiki/SoftICE
OllyDbg
Trw2000
Ida Pro
Fuente: Wikipedia