?Qué es la depuración?
La depuración es el proceso de localizar y eliminar errores de codificación en los programas informáticos. En informática e ingeniería, la palabra “bug” es sinónimo de “error”. El objetivo de la depuración es identificar y corregir la causa raíz de un error.
La depuración desempe?a un papel importante en el proceso de desarrollo de software e irónicamente, realizar pruebas para determinar y eliminar la presencia de errores puede llevar tanto tiempo como escribir el código. El proceso de depuración en sí consiste en identificar la causa de un error y solucionarlo. Durante el proceso de depuración, que puede realizarse manualmente o automatizarse mediante herramientas de depuración de software, los ingenieros buscarán:
- Errores de sintaxis
- Errores tipográficos
- Errores de lógica
- Errores de implementación
Las herramientas de software de depuración de código incluyen soporte de kit de desarrollo de software (SDK) para lenguajes de programación específicos, funciones de alerta de errores y una interfaz de usuario (cuadro de mandos) que permite a los desarrolladores profundizar para obtener más información sobre errores concretos.
Definición de depuración
En el proceso de depuración, se compilan y ejecutan periódicamente programas de software completos para identificar y rectificar problemas. Los grandes programas de software, que contienen millones de líneas de código fuente, se dividen en peque?os componentes. Para mayor eficacia, cada componente se depura por separado en un primer momento, seguido del programa en su conjunto. En general, el funcionamiento de la depuración depende de las estrategias globales de comprobación que se elijan.
Estrategias de depuración
Las estrategias de depuración incluyen:
- Backtracking – el cazador de errores comienza a partir de la sentencia en la que se ha descubierto un síntoma de error y sigue el código fuente hacia atrás hasta el error real.
- Método de eliminación de causas – el ingeniero de software crea una lista de causas potenciales de un error y ejecuta pruebas para determinar el origen de un punto de fallo.
- Rebanado del programa: los encargados de las pruebas de control de calidad ejecutan un grupo de sentencias del programa (rebanado) en condiciones específicas.
- Shotgun Debugging: método de depuración basado en conjeturas del desarrollador que consiste en probar y errar cruzando los dedos.
- Depuración con patito de goma: el programador explica el código línea por línea a un patito de goma u otro objeto inanimado. El objetivo es fomentar un pensamiento flexible y lógico.
- Depuración en pareja: en lugar de explicar el código línea por línea a un objeto inanimado, los programadores se turnan para explicarse el código línea por línea.
Importancia de la depuración
La depuración es una parte fundamental del tratamiento del código y el desarrollo de software. Los expertos suelen hablar de la depuración como algo que implica “personas, procesos y sistemas” que ayudarán a resolver cualquier problema con una base de código existente.
Un excelente ejemplo de esto es el auge de las prácticas modernas llamadas “depuración inversa”. En la era de devOps y del desarrollo ágil de software, la depuración inversa implica la supervisión de programas y la entrega de datos de determinadas maneras, con el fin de automatizar el proceso de depuración. Esto solían hacerlo informáticos individuales en un proceso que a menudo se parecía a una especie de trabajo de detective técnico.
En los viejos tiempos, los programadores rellenaban tickets individuales después de observar algún fallo funcional durante las pruebas, y luego volvían a escudri?ar el código manualmente o utilizaban depuradores ahora primitivos para averiguar qué estaba pasando. No era raro que incluso un equipo experimentado se quedara “perplejo” durante un tiempo, bien por la sofisticación del código que creaba el fallo, bien por lo escurridizo del fallo en las pruebas, o por ambas cosas.
Por el contrario, los sistemas de depuración inversa que se asemejan al dise?o de los registradores de vuelo de los aviones rastrean los programas en tiempo de ejecución, o los supervisan de otra manera, con el fin de proporcionar la información adecuada para que la depuración sea un proceso más automatizado.
Al realizar más tipos de seguimiento sofisticado en tiempo real o a medida que se utilizan los programas, las herramientas de depuración inversa captarán más detalles que los informáticos habrían tenido que investigar tradicionalmente de forma manual y ayudarán a los desarrolladores a priorizar qué errores deben tratarse primero.
Depuración automatizada
Las herramientas de depuración automatizada pueden ayudar a los desarrolladores a simplificar la gestión de errores y reducir el tiempo que se tarda en corregir errores tipográficos y de sintaxis o lógica.
Este tipo de herramienta de control de calidad (QA) puede capturar excepciones a medida que se producen y proporcionar a los desarrolladores datos contextuales y de diagnóstico para facilitar la resolución de errores. Algunas herramientas de depuración automatizada utilizan algoritmos codificados, mientras que otras emplean motores de aprendizaje automático para identificar distintos tipos de errores y patrones de error.
Cuando los equipos de desarrollo utilizan integración continua y entrega continua (CI/CD), la depuración puede realizarse automáticamente en pruebas unitarias durante el proceso de desarrollo o mediante pruebas canarias que liberan los cambios de código a un número limitado de usuarios finales en el entorno de producción.
Herramientas de depuración
Dalvik Debug Monitor Service (DDMS) es una herramienta de depuración utilizada en la plataforma Android. El Dalvik Debug Monitor Service se descarga como parte del SDK de Android. Algunos de los servicios que proporciona el DDMS son el reenvío de puertos, la captura de pantalla en el dispositivo, la monitorización de hilos y heaps en el dispositivo y la información de estado de radio.
El servicio Dalvik Debug Monitor permite a los desarrolladores detectar errores en las aplicaciones que se ejecutan en un emulador o en un dispositivo Android real. Por ejemplo, mediante la función LogCat del DDMS, los desarrolladores pueden ver los mensajes de registro relativos al estado de la aplicación y del dispositivo. LogCat puede se?alar el número exacto de línea en el que se ha producido un error.
Otra función del DDMS, conocida como Emulator Control, permite a los desarrolladores simular estados y actividades del teléfono. Por ejemplo, puede simular diferentes tipos de redes como GPRS, EDGE y UTMS, que pueden tener diferentes características de red como velocidad y latencia.
Aparte de las funciones mencionadas anteriormente, el servicio Dalvik Debug Monitor también proporciona información sobre LogCat, procesos y estados de radio, así como suplantación de llamadas entrantes, SMS y datos de localización. Esta herramienta de depuración puede integrarse en el IDE de Eclipse a?adiendo el complemento ADT (Android Development Tools). Si no, se puede acceder a ella desde la línea de comandos y se conectará automáticamente a cualquier emulador en funcionamiento.
Otras aplicaciones de depuración populares son:
Chrome DevTools es un conjunto de herramientas de creación, depuración y creación de perfiles integradas en Google Chrome.
Fusion Reactor es una herramienta de monitorización continua y depuración en vivo para Java y ColdFusion. Permite a los ingenieros de software cruzar referencias de llamadas a API y peque?as unidades de código sin tener que compilar continuamente el código.
GDB (The GNU Debugger) se ejecuta en la línea de comandos y puede utilizarse para depurar programas escritos en C, C++, Fortran y Modula-a.
El desensamblador interactivo (IDA) permite a los ingenieros de software aplicar ingeniería inversa al código ejecutable en máquina para convertirlo en lenguaje ensamblador.
Lightrun es un depurador del lado del servidor que permite a los desarrolladores ejecutar pruebas y diagnósticos contra microservicios, Kubernetes, enjambres Docker y Amazon Web Services.
Ejemplos de depuración
Los depuradores son herramientas que permiten a los desarrolladores mejorar la calidad de su software, facilitando la localización y resolución de errores complejos.
Algunos ejemplos más reconocidos son:
Visual Studio Debugger: incluido en el entorno de desarrollo de Visual Studio, este depurador es muy popular entre los desarrolladores de .NET y C#. Permite depurar código a nivel local o en aplicaciones remotas.
Xcode Debugger: utilizado para el desarrollo de aplicaciones en iOS y macOS, el depurador de Xcode permite depurar aplicaciones Swift y Objective-C. Incluye funciones para depurar gráficos, analizar el uso de memoria y CPU.
Eclipse Debugger: En el IDE Eclipse, el depurador es muy utilizado para lenguajes como Java y C++. Permite ejecutar el código paso a paso, inspeccionar el estado del programa y modificar variables en tiempo real.
LLDB (LLVM Debugger): LLDB es el depurador del proyecto LLVM y se utiliza principalmente con lenguajes como C, C++, y Swift. Similar a GDB, LLDB permite establecer puntos de interrupción, inspeccionar variables, y seguir el flujo del programa.?