Articulo de referencia

Código de depuración

El código de depuración es código informático que se introduce en un programa para detectar errores o ayudar a determinar su causa. Puede ser tan sencillo como un comando `echo`...

El código de depuración es código informático que se introduce en un programa para detectar errores o ayudar a determinar su causa. Puede ser tan sencillo como un comando `echo` para imprimir el valor de una variable en determinados puntos del programa. Los entornos de desarrollo integrados modernos a veces hacen que esto sea innecesario, ya que permiten colocar puntos de detención en lugares específicos del programa y ofrecen la posibilidad de visualizar el valor de las variables a través del IDE en lugar de la salida del programa.

Usos del código de depuración

La función principal del código de depuración es ayudar a depurar el código. Esto se puede lograr de varias maneras, como mediante instrucciones print, comandos assert y pruebas unitarias.

Uso en codificación

Se pueden añadir pequeñas instrucciones al código para detectar la presencia y la ubicación de errores en un programa. También se pueden usar para proporcionar datos de prueba que simulen posibles casos de uso que el programa deba aceptar. Asimismo, pueden servir como marcador de posición para código que aún está en desarrollo.

Uso en videojuegos

Muchos mods y códigos de trucos para videojuegos , como códigos de trucos de nivel , invencibilidad , etc., se introdujeron originalmente como código de depuración para permitir a los programadores y/o probadores saltarse obstáculos que les impedirían llegar rápidamente a las partes del juego que necesitaban ser probadas; y en estos casos, los modos de trucos a menudo se denominan modo de depuración .

Se recomienda como buena práctica eliminar el código de depuración de las versiones de producción de las aplicaciones, ya que puede ralentizarlas. [ 1 ] Sin embargo, algunos juegos dejan estos comandos y trucos disponibles para que los jugadores los usen para mejorar su experiencia de juego. Por ejemplo, la versión para PC de The Elder Scrolls V: Skyrim permite al jugador acceder a la consola de comandos, lo que le da la capacidad de modificar ciertos aspectos del juego mientras se ejecuta. Estos comandos incluyen otorgar al jugador invencibilidad, teletransportación y oro ilimitado. [ 2 ]

Ejemplos de código de depuración

La depuración mediante instrucciones de impresión consiste en utilizarlas para encontrar y aislar errores en un programa. Se puede usar para rastrear el flujo de valores de datos en un fragmento de código. Este tipo de código de depuración tiene algunas desventajas. Es temporal y generalmente se elimina cuando se resuelve el error. El uso de muchas instrucciones de impresión puede afectar la salida real de un programa y ralentizar su ejecución, dependiendo de la frecuencia con la que se llamen. En algunos casos, las instrucciones de impresión no ayudan a encontrar el problema; por ejemplo, la salida estándar de C++ tiene un búfer , y a veces el contenido del búfer se pierde, lo que da lugar a información de depuración incorrecta. [ 3 ]

Ejemplo de C++

void TestFunction ( int timesToRun ) { cout << "el algoritmo debería ejecutarse " << timesToRun << " veces" << std :: endl ; for ( int i = 0 ; i <= timesToRun ; i ++ ) { // ejecutar algoritmo algorithm (); // imprimir instrucción de depuración cout << "algoritmo ejecutado " << i ++ << " veces." << std :: endl ; } }

Hay un error en el código anterior. Al ingresar el valor 5, el programa debería imprimir lo siguiente en la consola.

El algoritmo debería ejecutarse 5 veces. El algoritmo se ejecutó 1 vez. El algoritmo se ejecuta 2 veces. El algoritmo se ejecuta 3 veces. El algoritmo se ejecuta 4 veces. El algoritmo se ejecuta 5 veces. 

El resultado real es el siguiente, que es incorrecto.

El algoritmo debería ejecutarse 5 veces. El algoritmo se ejecutó 1 vez. El algoritmo se ejecuta 2 veces. El algoritmo se ejecuta 3 veces. El algoritmo se ejecuta 4 veces. El algoritmo se ejecuta 5 veces. El algoritmo se ejecuta 6 veces. 

Nuestra función está ejecutando el algoritmo una vez más, y tras una inspección más detallada, queda claro que nuestro bucle está mal programado.

Afirmar declaraciones

Por lo general, el mejor momento para corregir un error es antes de que se ejecute el programa. Esto se puede lograr insertando aserciones en el código. En C, esto se puede hacer usando el comando assert(). Un comando assert puede verificar si el programa se está ejecutando bajo las condiciones correctas en este punto del programa. [ 4 ]

Ejemplo en C

int i , a [ 10 ]; para ( i = 0 ; i < 10 ; ++ i ) { a [ i ] = 10 - i ; } para ( i = 0 ; i < 10 ; ++ i ) { a [ a [ i ]] = a [ i ]; }

El código anterior provocará un error de índice fuera de rango, lo que puede generar resultados inesperados. El código se puede escribir de forma más segura, utilizando aserciones, como se muestra a continuación.

#include <assert.h> int i , a [ 10 ]; for ( i = 0 ; i < 10 ; ++ i ) { assert ( 0 <= i && i < 10 ); a [ i ] = 10 - i ; } for ( i = 0 ; i < 10 ; ++ i ) { assert ( 0 <= i && i < 10 ); assert ( 0 <= a [ i ] && a [ i ] < 10 ); a [ a [ i ]] = a [ i ]; }

JUnit

JUnit es un marco de trabajo sencillo para escribir pruebas repetibles, disponible para Java, que permite a los programadores crear sus propias pruebas unitarias. Una prueba unitaria es un código escrito para ejecutar una función específica del código que se va a probar y, por lo general, se dirige a una pequeña unidad de código, como un método o una clase. Mediante una combinación de sentencias assert y otras sentencias de prueba, los programadores pueden crear conjuntos de casos de prueba para determinar si un método o función se ejecuta correctamente. [ 5 ]

Referencias

  1. "Copia archivada" . Archivado del original el 2 de abril de 2010. Consultado el 26 de marzo de 2010 .{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace )
  2. Gamer, PC (10 de noviembre de 2021). "Comandos de consola de Skyrim: Conviértete en un gigante, un fantasma o un dios viviente" . PC Gamer .
  3. "Técnicas de depuración" . oopweb.com . Archivado del original el 17 de agosto de 2002.
  4. "Tarjeta de presentación V" .
  5. "Inicio" . junit.org .