1 1 8 DepuracióN (Debugging)

17
1_1_8 Depuración 1_1_8 Depuración (debugging) (debugging) Apoyo SSD3 Apoyo SSD3

description

 

Transcript of 1 1 8 DepuracióN (Debugging)

Page 1: 1 1 8 DepuracióN (Debugging)

1_1_8 Depuración 1_1_8 Depuración (debugging)(debugging)

Apoyo SSD3Apoyo SSD3

Page 2: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 22

El Proceso de DepuraciónEl Proceso de Depuración

Depuración (debugging) es el proceso de Depuración (debugging) es el proceso de identificar un error y corregirlo. identificar un error y corregirlo.

El tiempo necesario para encontrar un El tiempo necesario para encontrar un error y corregirlo dependerá de tu error y corregirlo dependerá de tu competencia en depuracióncompetencia en depuración

Page 3: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 33

La siguiente figura muestra un resumen La siguiente figura muestra un resumen de una efectiva técnica para depurar un de una efectiva técnica para depurar un programa:programa:

Page 4: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 44

Page 5: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 55

Paso 1Paso 1

Crea un caso de prueba: para Crea un caso de prueba: para diagnosticar y corregir un error, debes diagnosticar y corregir un error, debes ser capaz de reproducirlo.ser capaz de reproducirlo.

Para ahorrar tiempo en las pruebas, Para ahorrar tiempo en las pruebas, crea un caso de prueba pequeño que crea un caso de prueba pequeño que reproduzca el error. reproduzca el error.

Implementa este caso de prueba en una Implementa este caso de prueba en una clase separada o en el método main del clase separada o en el método main del programa que será depurado.programa que será depurado.

Page 6: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 66

Paso 2Paso 2

Ubica el código que causa el error. Un buen Ubica el código que causa el error. Un buen lugar para comenzar la búsqueda es el caso lugar para comenzar la búsqueda es el caso de prueba mismo: encuentra la línea de de prueba mismo: encuentra la línea de código código en el caso de prueba en el caso de prueba donde aparece el donde aparece el error. error.

Esta línea te dirigirá al código que contiene el Esta línea te dirigirá al código que contiene el error. Una vez que hayas ubicado el código, error. Una vez que hayas ubicado el código, estudia sus estructuras de control y sus estudia sus estructuras de control y sus variables. Determina cómo variables. Determina cómo se esperase espera que se  que se comporte el código y qué valores comporte el código y qué valores se se esperaespera que contengan las variables. que contengan las variables.

Page 7: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 77

Paso 3Paso 3

Repasa el código línea por línea.Repasa el código línea por línea. Presta particular atención a las Presta particular atención a las

instrucciones que asignen un nuevo instrucciones que asignen un nuevo valor a una variable relevante. Identifica valor a una variable relevante. Identifica el código que causa el error.el código que causa el error.

Page 8: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 88

Paso 4Paso 4

No asumas que el error es causado por No asumas que el error es causado por un problema de lógica en esta parte del un problema de lógica en esta parte del código. código.

Puede ser causado por datos erróneos Puede ser causado por datos erróneos originados en otras áreas del código. originados en otras áreas del código.

Si es así, localiza el código donde se Si es así, localiza el código donde se originaron los datos erróneos y repite la originaron los datos erróneos y repite la operación a partir del paso 2.operación a partir del paso 2.

Page 9: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 99

Paso 5Paso 5

Repara el código: Repara el código:  La corrección no debe "esconder", "maquillar" o La corrección no debe "esconder", "maquillar" o

"reprimir" el error."reprimir" el error. La corrección no debe introducir nuevos errores. El La corrección no debe introducir nuevos errores. El

desarrollador debe entender cómo la corrección desarrollador debe entender cómo la corrección afecta otras partes del código porque una afecta otras partes del código porque una corrección puede tener efectos colaterales corrección puede tener efectos colaterales inesperados.inesperados.

Resulta prudente revisar el código Resulta prudente revisar el código circundante. En muchos casos, hay más de un circundante. En muchos casos, hay más de un error en la misma parte del código error en la misma parte del código

Page 10: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 1010

El DepuradorEl Depurador

Un depurador (debugger) es una Un depurador (debugger) es una herramienta conveniente para localizar la herramienta conveniente para localizar la fuente de los errores. fuente de los errores.

Un depurador te permite ejecutar una Un depurador te permite ejecutar una línea a la vez y observar su efecto en las línea a la vez y observar su efecto en las variables del programa. variables del programa.

Page 11: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 1111

Tipos de depuradoresTipos de depuradores

Existen muchos depuradores de Java Existen muchos depuradores de Java disponibles:disponibles: Ambientes integrados de desarrollo (Integrated Ambientes integrados de desarrollo (Integrated

Development Environments o IDE), tales como Development Environments o IDE), tales como Eclipse, Sun ONE Studio, Borland JBuilder y BlueJ, Eclipse, Sun ONE Studio, Borland JBuilder y BlueJ, contienen sus propios depuradores.contienen sus propios depuradores.

Depuradores gráficos autónomos, tales como JSwat y Depuradores gráficos autónomos, tales como JSwat y DDDDDD

Depuradores basados en texto, tales como Sun jdbDepuradores basados en texto, tales como Sun jdb

Page 12: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 1212

Capacidades de los depuradoresCapacidades de los depuradores

1 Establecer puntos de ruptura. 1 Establecer puntos de ruptura. Un punto de ruptura (breakpoint) es un Un punto de ruptura (breakpoint) es un

marcador en el código que indica que el marcador en el código que indica que el depurador puede detener la ejecución del depurador puede detener la ejecución del programa antes de ejecutar una cierta programa antes de ejecutar una cierta instrucción.instrucción.

Page 13: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 1313

Capacidades de los depuradoresCapacidades de los depuradores

2 Recorrer un programa paso a paso. 2 Recorrer un programa paso a paso. resumeresume. Continuar con la ejecución, no . Continuar con la ejecución, no

solamente paso a paso.solamente paso a paso. step intostep into. Ejecutar . Ejecutar la línea actual. Si la línea actual llama a un la línea actual. Si la línea actual llama a un

método, el depurador "pasa adentro de" el método, el depurador "pasa adentro de" el método, es decir, la ejecución se mueve al método, es decir, la ejecución se mueve al método método llamadollamado y se detiene antes de la  y se detiene antes de la primera línea del método llamadoprimera línea del método llamado

Page 14: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 1414

Capacidades de los depuradoresCapacidades de los depuradores

step overstep over. Ejecuta la línea actual. Si la línea . Ejecuta la línea actual. Si la línea actual llama a un método, el depurador "pasa actual llama a un método, el depurador "pasa sobre" el método, es decir, el método es sobre" el método, es decir, el método es ejecutado y la ejecución se detiene antes de ejecutado y la ejecución se detiene antes de que la siguiente línea del método que la siguiente línea del método actualactual..

step returnstep return. Se ejecuta hasta que el método . Se ejecuta hasta que el método actual es completado y regresa al actual es completado y regresa al método método que hace la llamadaque hace la llamada. La ejecución se . La ejecución se detiene antes de la siguiente línea del detiene antes de la siguiente línea del método método que hace la llamadaque hace la llamada..

Page 15: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 1515

Capacidades de los depuradoresCapacidades de los depuradores

3 Examinar los datos.3 Examinar los datos. El depurador puede desplegar los valores El depurador puede desplegar los valores

de las variables del método y la clase de las variables del método y la clase actuales. Si una variable es un objeto actuales. Si una variable es un objeto compuesto que contiene múltiples compuesto que contiene múltiples elementos, el usuario puede "abrir" el objeto elementos, el usuario puede "abrir" el objeto e inspeccionar el valor de cada elemento.e inspeccionar el valor de cada elemento.

Page 16: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 1616

Capacidades de los depuradoresCapacidades de los depuradores

4 Rastreo de la pila. 4 Rastreo de la pila. Cuando un punto de ruptura es alcanzado y Cuando un punto de ruptura es alcanzado y

la ejecución suspendida, el depurador la ejecución suspendida, el depurador puede desplegar la secuencia de los puede desplegar la secuencia de los métodos llamados.métodos llamados.

5 El usuario puede examinar los valores 5 El usuario puede examinar los valores de las variables locales que se de las variables locales que se encuentran en los métodos llamados.encuentran en los métodos llamados.

Page 17: 1 1 8 DepuracióN (Debugging)

Mtl Lourdes CahuichMtl Lourdes Cahuich 1717

ConclusiónConclusión

Como puedes ver, un depurador es una Como puedes ver, un depurador es una herramienta poderosa para monitorear la herramienta poderosa para monitorear la ejecución de un programa e identificar la ejecución de un programa e identificar la fuente de errores. Sin embargo, un fuente de errores. Sin embargo, un depurador es solamente una herramienta. depurador es solamente una herramienta.

La habilidad para identificar y eliminar La habilidad para identificar y eliminar errores depende, en última instancia, de la errores depende, en última instancia, de la competencia del programadorcompetencia del programador