Anuncios

Bienvenidos sean a este post, hoy veremos de que se trata la depuracion o tambien conocida como debug.

Anuncios
Anuncios

Cuando hablamos de errores no solo nos referimos a excepciones sino tambien a los famosos «bugs», estos en realidad son mas de un error de tipo logico o mejor dicho humano, si si en general son errores que podemos ocasionar nosotros con nuestras logica en el codigo, la accion de estudiar estos errores para poder solucionarlos se llama depuracion o debug en ingles, en general no van a encontrar una forma de solucionar los problemas sino que mas seran unas guias donde les indicaran distintos procedimientos para poder deducir donde esta la falla que genera el bug, a diferencia de los tests y las excepciones no son siempre errores que tengamos una notificacion sobre el mismo sino mas bien pueden hacer que el programa en lugar de tener la conducta programada tome una conducta completamente distinta, o bien en un determinado momento nuestro programa nos devuelva una excepcion de la nada, por ejemplo una division por cero, y nosotros en ningun momento realizamos dicha division, esto puede suceder si nosotros tenemos una serie de bucles o comprensiones y en algun momento de hacer dichas operaciones realizamos una operacion dividida por cero la cual detendra el programa con dicha excepcion.

Anuncios
Anuncios

Analicemos el caso de error de logica, por ejemplo tenemos un codigo donde devuelve una salida en base a una serie de condicionales, y en este caso podemos solicitar que devuelva un valor que este entre dos valores pero en lugar de usar un comparador AND usamos un OR y esta condicion nunca se cumplira debido a que en lugar de comparar si el valor esta entre un rango verifica si es menor o mayor que los valores solicitados, este es un error habitual de logica, calculo que se preguntaran pero los tests no nos notificaran esto? En realidad no porque la logica es correcta para el interprete o compilador pero obviamente no es una logica correcta para nosotros porque no devolvera ninguna excepcion sino mas bien otro resultado que el test toma como correcta, por esta razon como mencionamos anteriormente no encontraran libros que hablen especificamente sobre esto sino mas bien es algo que se logra con la experiencia en el desarrollo de codigo y el intercambio de conocimientos con otros colegas, pero esto no quita que existan algunas tecnicas para poder estudiar como se comporta nuestro codigo en determinados puntos o poder eliminar una parte del codigo si creemos que es sospechoso de generar errores, esto en general lo hacemos con los comentarios o documentacion que hablamos en este post, esto es debido a que todo aquello que se documente o comente desaparecera para el compilador del lenguaje y por ende del codigo, por eso en los siguientes posts hablaremos sobre varias tecnicas para poder investigar nuestro codigo ante un eventual error pero a continuacion hablaremos sobre el mas basico.

Anuncios

Depurando con print

Anuncios

Esta es la tecnica mas facil, mas basica pero tambien la menos efectiva, no puede ser usada en cualquier momento y requiere acceso al codigo fuente y a la terminal donde corre porque la usara para mostrar los resultados del print, pero como mencionamos es facil y rapida, vamos a pensar en un ejemplo donde tenemos una pagina web y vemos que la pagina no muestra lo que deberia, una opcion es llenar una vista con prints para ver valores o llamadas de funciones en la consola mientras se reinicia la pagina, esto no solo genera informacion duplicada porque tendremos los print que agregamos sino tambien informacion de depuracion propia del servidor o navegador, ya sea porque mostramos volcado de hora y fecha, o como mencionamos mostramos una cadena indicando si la funcion fue llamada y en caso de ausencia sabremos que no es llamada pero esto tiene un inconveniente grave, usualmente una vez solucionado los problemas nos olvidamos de eliminar dichos print adicionales por lo tanto estamos sobrecargando la memoria y desperdiciando tiempos de CPU, por esta razon a veces es mas practico crear una funcion para esto en lugar de usar varios print en todo el codigo.

Anuncios

En resumen, hoy hemos visto una breve introduccion sobre depuracion, que es, que es un bug, como pueden ocurrir, como podemos analizarlos para solucionarlos, como investigarlos, por ultimo una tecnica muy simple para poder trabajar con depuracion aunque no es la mas recomendada, espero les haya gustado sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50