8 de los Mejores Depuradores de Linux para Ingenieros de Software

Charset=invalidcharsetid 48

Los depuradores son esenciales para localizar errores en los programas. Realizan el trabajo de intentar encontrar problemas en tu código antes de que sea hora de compilarlo, generalmente proporcionando más información de la que el compilador ofrecería. Linux, siendo un ecosistema principalmente de código abierto, tiene una plétora de este tipo de aplicaciones que funcionan en varios lenguajes y arquitecturas de procesamiento diferentes. En esta guía, nos adentraremos directamente en el mundo de los depuradores de Linux.

Tabla de Contenidos

    1. GNU Debugger(GDB)
    1. Data Display Debugger (DDD)
    1. LLDB
    1. Delve
    1. Xdebug
    1. KDbg
    1. Valgrind
    1. strace

1. GNU Debugger(GDB)

El GNU Debugger, también conocido como GDB, es uno de los depuradores de Linux más poderosos disponibles para los programadores modernos. Es una herramienta robusta con un conjunto extenso de características. GDB soporta muchos lenguajes de programación populares, incluyendo C, C++, Go y Rust. También funciona en muchas arquitecturas de CPU diferentes, como x86, x86-64, ARM, PowerPC, SPARC y MIPS.

Demostración del GDB ejecutando un programa de prueba

Instala GDB usando estos comandos:

En distribuciones basadas en Ubuntu/Debian:

sudo apt install gdb

En distribuciones de Fedora/RHEL:

sudo dnf install gdb

En distribuciones basadas en Arch:

sudo pacman -S gdb

Siempre que compiles usando GCC con símbolos de depuración, puedes avanzar paso a paso a través de las instrucciones de un programa a medida que se ejecuta escribiendo s. Escribir r ejecutará tu programa a través del depurador. Para iniciar GDB con el programa cargado, simplemente escribe gdb en tu terminal seguido de la ruta del programa.

Una vez dentro, escribir help te dará un catálogo bien organizado que explica todo lo que puedes hacer con este depurador todopoderoso.

2. Data Display Debugger (DDD)

Si jugar con comandos no es tu fuerte pero aún amas las características que GDB tiene para ofrecer, DDD te proporciona una interfaz gráfica simple que brinda todas sus funciones en una interfaz punto y clic. Es el depurador GUI clásico de Linux.

DDD ejecutando un programa rudimentario y saliendo.

La interfaz puede parecer un poco básica, pero es tan poderosa como cualquier otro depurador. La diferencia aquí es que obtienes el depurador de GNU con una interfaz gráfica.

Para instalarlo:

En distribuciones basadas en Ubuntu/Debian:

sudo apt install ddd

En distribuciones de Fedora/RHEL:

sudo dnf install ddd

En distribuciones basadas en Arch:

yay -S ddd

Cualquier cosa basada en Arch deberá usar un AUR helper, ya que DDD no existe en sus repositorios oficiales. Alternativamente, puedes instalar DDD en un sistema basado en Arch sin un AUR helper:

sudo pacman -S --needed base-devel  
git clone https://aur.archlinux.org/ddd.git  
cd ddd  
makepkg -si

3. LLDB

LLDB es parte del proyecto LLVM. La suite LLVM ha ido ganando popularidad gracias a su flujo de trabajo eficiente. También se ha convertido en el depurador predeterminado para Xcode de macOS y Android Studio. Algunas de las principales características de LLDB incluyen soporte para varias integraciones de compiladores y depuración remota. Soporta los lenguajes C (C, C++ y Objective-C).

Depurador de Linux Lldb

Para aquellos que ya están familiarizados con los comandos básicos de GDB, LLDB se sentirá familiar. Escribir run o r ejecuta el programa, y escribir step o s avanza a través de sus subrutinas.

Para instalarlo:

En distribuciones basadas en Ubuntu/Debian:

sudo apt install lldb

En distribuciones de Fedora/RHEL:

sudo dnf install lldb

En distribuciones basadas en Arch:

sudo pacman -S lldb

4. Delve

Delve es un depurador de Linux simple, pero lleno de características, para el lenguaje de programación Go de Google. Puedes usarlo para interactuar con tu programa en tiempo de ejecución y manipular cosas como goroutines y pilas. El depurador en sí mismo está escrito en Go, lo que proporciona un entorno de ejecución en el mismo contexto que el programa que estás probando.

Delve opera bajo el mismo principio que GDB y LLDB salvo por el hecho de que tiene un conjunto único de comandos que difieren en gran medida de los otros dos. Simplemente escribe help una vez dentro y tendrás una lista completa de todas las opciones de depuración que te proporciona.

A diferencia de los depuradores más generales para múltiples lenguajes, Delve ofrece más comandos específicos de Go que te permiten indagar a un nivel más granular en tu aplicación mientras se ejecuta.

Usando Delve para mirar prácticas Go y hilos específicos.

Para instalarlo:

En distribuciones basadas en Ubuntu/Debian:

sudo apt install delve

En distribuciones de Fedora/RHEL:

sudo dnf install delve

En distribuciones basadas en Arch:

sudo pacman -S delve

5. Xdebug

Mientras que la mayoría de la gente aprende a volcar sus variables (conocido en las comunidades de PHP como “dump & die”) para averiguar qué está mal en un cierto aspecto de su código, hay ocasiones en que necesitas algo más pesado que pueda guiarte a través de todas tus rutinas. Xdebug ofrece esto a raudales para programadores de PHP aspirantes y veteranos.

Es un depurador de Linux que avanza a través del código PHP línea por línea y muestra exactamente lo que está sucediendo a medida que se procesa una página web. Xdebug también funciona en varios IDEs, incluyendo VSCode. Otras de sus características incluyen un robusto perfilador, rastreador de pila y la capacidad de volcar el segmento de ejecución completo.

Para instalar Xdebug:

En distribuciones basadas en Ubuntu/Debian:

sudo apt install php-xdebug

En distribuciones de Fedora/RHEL:

sudo dnf install php-xdebug

En distribuciones basadas en Arch:

sudo pacman -S xdebug

6. KDbg

KDbg es un depurador GUI para el entorno de escritorio KDE. Dado que funciona como una interfaz frontal de GDB, al igual que DDD, obtienes todas las características de GDB junto con una interfaz de usuario intuitiva. Los programadores más experimentados seguramente apreciarán una vista clara de todas las variables mientras avanzan a través de su código, así como un panel completamente dedicado que muestra lo que cada registro de CPU está sosteniendo. Esto no es tan fácil de visualizar en ninguno de los otros depuradores cubiertos aquí.

Debido a esto, KDbg es una excelente opción para programadores de aplicaciones nativas tradicionales, desde los aprendices que apenas están comenzando a aprender hasta los veteranos más experimentados.

KDbg depurando un programa en funcionamiento escrito en C.

Para instalar KDbg:

En distribuciones basadas en Ubuntu/Debian:

sudo apt install kdbg

En distribuciones de Fedora/RHEL:

sudo dnf install kdbg

En distribuciones basadas en Arch:

sudo pacman -S kdbg

Nota: Si estás usando una distribución basada en Ubuntu o Debian y no encuentras el paquete para kdbg en los repositorios oficiales, aquí está exactamente lo que debes escribir para compilarlo tú mismo:

sudo apt install build-essential cmake extra-cmake-modules qtbase5-dev libkf5i18n-dev libkf5iconthemes-dev libkf5xmlgui-dev  
git clone -b maint https://github.com/j6t/kdbg.git  
cd kdbg  
cmake .  
make  
sudo make install

7. Valgrind

Valgrind es un depurador de memoria sólido como una roca que ofrece muchas herramientas adicionales para el análisis de software. Funciona tanto en Linux como en Mac. Además, puedes usarlo como un marco y crear herramientas de análisis dinámico como perfiles. En general, Valgrind es una excelente opción para profesionales debido a su rico conjunto de características y variedad de herramientas que monitorean la memoria de un programa mientras se ejecuta.

Valgrind detectando una fuga de memoria en un programa.

Para instalar Valgrind:

En distribuciones basadas en Ubuntu/Debian:

sudo apt install valgrind

En distribuciones de Fedora/RHEL:

sudo dnf install valgrind

En distribuciones basadas en Arch:

sudo pacman -S valgrind

8. strace

strace es una utilidad de espacio de usuario para Unix que permite a los usuarios rastrear llamadas al sistema y señales directamente desde el terminal.

Depurador de Linux Strace

Los programadores pueden usarlo para volcar rastros de pila, filtrar llamadas al sistema, modificar códigos de retorno, extraer descriptores de archivo y mucho más.

Más importante aún, strace te permite adjuntarte a programas en ejecución. Esto te permite profundizar en cualquier software que ejecutes en tu máquina para aprender más sobre lo que podría estar causando un fallo.

Para instalar strace:

En distribuciones basadas en Ubuntu/Debian:

sudo apt install strace

En distribuciones de Fedora/RHEL:

sudo dnf install strace

En distribuciones basadas en Arch:

sudo pacman -S strace

El Arsenal Te Espera

Con estas herramientas, puedes investigar, analizar y examinar tu código de maneras que antes podían parecer inaccesibles. Puede haber un poco de curva de aprendizaje a seguir, pero vale la pena. Si estás serio acerca de programar en Linux, aprender a usar sus depuradores te ahorrará mucho tiempo a largo plazo.

Ahora que tienes los mejores depuradores de Linux, es hora de que encuentres las mejores distribuciones de Linux para desarrolladores y programadores.