fbpx
Wikipedia

Depurador

Un depurador (en inglés: debugger) es un programa usado para probar y depurar (eliminar) los errores de otros programas (el programa "objetivo"). 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.

Depurador
Parte de herramienta de programación
Información general
Tipo de programa Herramienta de programación

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í".[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 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.

Dependencia del lenguaje

Algunos depuradores operan en un simple lenguaje específico mientras que otros pueden manejar múltiples lenguajes transparentemente. Por ejemplo si el programa objetivo principal es escrito en COBOL, pero llama a subrutinas en assembler y también subrutinas en PL/1, el depurador puede cambiar modos dinámicamente para acomodar los cambios en el lenguaje a medida que ocurren.

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 de hardware para la depuración

La mayoría de los microprocesadores modernos tienen al menos una de estas características en su diseño de CPU para hacer la depuración más fácil:

  • 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. Este 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.

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 complejos sistemas distribuidos.

Ejemplos de depuradores

Véase también

Referencias

  1. . Archivado desde el original el 22 de septiembre de 2010. Consultado el 23 de diciembre de 2010. 
  •   Datos: Q193231

depurador, este, artículo, sección, necesita, referencias, aparezcan, publicación, acreditada, este, aviso, puesto, abril, 2013, depurador, inglés, debugger, programa, usado, para, probar, depurar, eliminar, errores, otros, programas, programa, objetivo, códig. Este articulo o seccion necesita referencias que aparezcan en una publicacion acreditada Este aviso fue puesto el 19 de abril de 2013 Un depurador en ingles debugger es un programa usado para probar y depurar eliminar los errores de otros programas el programa objetivo El codigo a ser examinado puede alternativamente estar corriendo en un simulador de conjunto de instrucciones ISS una tecnica que permite gran potencia en su capacidad de detenerse cuando son encontradas condiciones especificas pero sera tipicamente algo mas lento que ejecutando el codigo directamente en el apropiado o el mismo procesador Algunos depuradores ofrecen dos modos de operacion la simulacion parcial o completa para limitar este impacto DepuradorParte de herramienta de programacionInformacion generalTipo de programaHerramienta de programacion editar datos en Wikidata Si es un depurador de nivel de fuente o depurador simbolico comunmente ahora visto en entornos de desarrollo integrados cuando el programa se estrella o alcanza una condicion predefinida la depuracion tipicamente muestra la posicion en el codigo original Si es un depurador de bajo nivel o un depurador de lenguaje de maquina muestra la linea en el fuente desensamblado a menos que tambien tenga acceso en linea al codigo fuente original y pueda exhibir la seccion apropiada del codigo del ensamblador o del compilador Un estrellamiento sucede cuando el programa no puede continuar normalmente debido a un error de programacion Por ejemplo el programa pudo haber intentado usar una instruccion no disponible en la version actual del CPU o haber intentado tener acceso a memoria protegida o no disponible Tipicamente los depuradores tambien ofrecen funciones mas sofisticadas tales como correr un programa paso a paso un paso o animacion del programa parar el programa breaking es decir pausar el programa para examinar el estado actual en cierto evento o instruccion 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 esta corriendo en vez de simplemente observarlo Tambien es posible continuar la ejecucion en una posicion diferente en el programa bypaseando un estrellamiento o error logico 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 decision en su uso incluso si otro lenguaje plataforma es mas 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 esta alli 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 hara a la temporizacion interna de un programa de software Como resultado incluso con una buena herramienta de depuracion es a menudo muy dificil rastrear problemas de tiempo de corrida en complejos sistemas distribuidos con multiples hilos La misma funcionalidad que hace a un depurador util para eliminar errores permite ser usado como herramienta de craqueo de software para evadir la proteccion anticopia la gestion digital de derechos y otras caracteristicas de proteccion de software A menudo tambien lo hace util como herramienta general de verificacion de pruebas cobertura de fallas o analizador de desempeno especialmente si son mostradas las longitudes de trayectoria de instruccion La mayoria de los motores de depuracion actuales tales como gdb y dbx proporcionan interfaces basadas en linea de comandos Los frontales de depuracion son extensiones populares a los motores de depuracion que proporcionan integracion al IDE animacion del programa y caracteristicas de visualizacion 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 anos 1970 Indice 1 Dependencia del lenguaje 2 Proteccion de memoria 3 Soporte de hardware para la depuracion 4 Uso 5 Informacion de depuracion 6 Otros usos 7 Efectos secundarios 8 Ejemplos de depuradores 9 Vease tambien 10 ReferenciasDependencia del lenguaje EditarAlgunos depuradores operan en un simple lenguaje especifico mientras que otros pueden manejar multiples lenguajes transparentemente Por ejemplo si el programa objetivo principal es escrito en COBOL pero llama a subrutinas en assembler y tambien subrutinas en PL 1 el depurador puede cambiar modos dinamicamente para acomodar los cambios en el lenguaje a medida que ocurren Proteccion de memoria EditarAlgunos depuradores tambien incorporan proteccion de memoria para evitar violaciones del almacenamiento tales como desbordamiento de bufer Esto puede ser extremadamente importante en los ambientes de procesamiento de transacciones donde la memoria es dinamicamente asignada desde pools de memoria en una base de tarea por tarea Soporte de hardware para la depuracion EditarLa mayoria de los microprocesadores modernos tienen al menos una de estas caracteristicas en su diseno de CPU para hacer la depuracion mas facil Soporte en hardware para ejecutar un programa paso a paso tal como el trap flag Un conjunto de instrucciones conformado con los requerimientos de virtualizacion de Popek y Goldberg hace mas facil escribir el software depuracion que corre en el mismo CPU que el software que esta siendo depurado tal CPU puede ejecutar los bucles internos del programa bajo prueba a velocidad completa y todavia permanecer bajo control del depurador In system programming ISP programacion en sistema permite a un depurador de hardware externo reprogramar un sistema bajo prueba por ejemplo adicion o eliminacion de instrucciones de puntos de ruptura breakpoints Muchos sistemas con tal soporte de ISP tambien tienen otro soporte de hardware de depuracion Soporte de hardware para breakpoints de codigo y datos tales como comparadores de direcciones y comparadores de valores de datos o con considerablemente mas trabajo implicado hardware de fallo de pagina El acceso de JTAG a las interfaces de depuracion de hardware tales como en procesadores de la arquitectura ARM o usando el conjunto de comandos Nexus Los procesadores usados en sistemas empotrados tipicamente tienen extenso soporte de depuracion 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 senalizacion bidireccional en el pin del RESET Uso EditarEl depurador lanza el programa a depurar Este se ejecuta normalmente hasta que el depurador detiene su ejecucion permitiendo al usuario examinar la situacion 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 peticion del usuario Durante esa interrupcion 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 situacion actual Cambiar el punto de ejecucion de manera que el programa continue su ejecucion en un punto diferente al punto en el que fue detenido Ejecutar instruccion a instruccion Ejecutar partes determinadas del codigo como el interior de una funcion o el resto de codigo antes de salir de una funcion El depurador depende de la arquitectura y sistema en el que se ejecute por lo que sus funcionalidades cambian de un sistema a otro Aqui se han mostrado las mas comunes Informacion de depuracion EditarPara poder aprovechar todas las posibilidades de depuracion es necesario que al compilar el programa a depurar se indique al compilador que debe incluir instrucciones e informacion extra para la depuracion del codigo Dicha informacion extra consiste basicamente en la correspondencia entre las instrucciones del codigo ejecutable y las instrucciones del codigo fuente que las originan asi como informacion sobre nombres de variables y funciones Aun si no se incluye esta informacion de depuracion sigue siendo posible monitorizar la ejecucion del programa Sin embargo resultara mas dificil y compleja debido a esa falta de informacion del contexto en el que se ejecuta el programa Otros usos EditarUn depurador tambien puede usarse para realizar ingenieria inversa o evitar protecciones de copia Mediante el uso del depurador se puede conocer el funcionamiento interno del programa examinado ayudando al proceso de ingenieria inversa o permitiendo desarrollar tecnicas para evadir las restricciones impuestas por el programa Efectos secundarios EditarEs importante notar que un programa que esta 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 ejecucion afectan especialmente a complejos sistemas distribuidos Ejemplos de depuradores EditarVisual DuxDebugger Debugger Disassembler for Windows 64 bit GNU Debugger gdb SoftICE OllyDbg Trw2000 Ida Pro Winpdb Cheat EngineVease tambien EditarDepuracion de programas Error de software Lenguaje ensamblador Lenguaje ensamblador x86 Anexo Listados de instrucciones x86 Ensamblador Desensamblador Compilador Decompilador Interprete informatica Emulador BOCHSReferencias Editar Copia archivada Archivado desde el original el 22 de septiembre de 2010 Consultado el 23 de diciembre de 2010 Datos Q193231Obtenido de https es wikipedia org w index php title Depurador amp oldid 131067602, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos