8 des meilleurs débogueurs Linux pour les ingénieurs logiciels

Charset=invalidcharsetid 48

Les débogueurs sont essentiels pour localiser les bogues dans les programmes. Ils font le travail de recherche des problèmes dans votre code avant qu’il ne soit temps de le compiler, fournissant généralement plus d’informations que le compilateur lui-même. Linux, étant un écosystème principalement open-source, a une pléthore de ces types d’applications qui fonctionnent sur plusieurs langages et architectures de traitement différents. Dans ce guide, nous allons plonger directement dans le monde des débogueurs Linux.

Table des matières

    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)

Le GNU Debugger, alias GDB, est l’un des débogueurs Linux les plus puissants disponibles pour les programmeurs modernes. C’est un outil robuste avec un ensemble de fonctionnalités étendu. GDB prend en charge de nombreux langages de programmation populaires, notamment C, C++, Go et Rust. Il fonctionne également sur de nombreuses architectures CPU différentes, telles que x86, x86-64, ARM, PowerPC, SPARC et MIPS.

Démonstration de GDB exécutant un programme de test

Installez GDB en utilisant ces commandes :

Sur les distributions basées sur Ubuntu/Debian :

sudo apt install gdb

Sur les distributions Fedora/RHEL :

sudo dnf install gdb

Sur les distributions basées sur Arch :

sudo pacman -S gdb

Tant que vous compilez en utilisant GCC avec des symboles de débogage, vous pouvez traverser les instructions d’un programme pendant son exécution en tapant s. Taper r exécutera votre programme via le débogueur. Pour démarrer GDB avec le programme chargé, tapez simplement gdb dans votre terminal suivi du chemin du programme.

Une fois à l’intérieur, taper help vous donnera un catalogue bien organisé expliquant tout ce que vous pouvez faire avec ce débogueur tout-puissant !

2. Data Display Debugger (DDD)

Si manipuler des commandes n’est pas votre truc mais que vous aimez toujours les fonctionnalités offertes par GDB, DDD vous offre une interface graphique simple qui fournit toutes ses fonctionnalités dans une interface point-and-click. C’est le débogueur GUI Linux par excellence.

DDD exécutant un programme rudimentaire et se fermant.

L’interface utilisateur peut sembler un peu minimaliste, mais elle est tout aussi puissante que tout autre débogueur. La différence ici est que vous obtenez le débogueur emblématique de GNU avec une interface graphique !

Pour l’installer :

Sur les distributions basées sur Ubuntu/Debian :

sudo apt install ddd

Sur les distributions Fedora/RHEL :

sudo dnf install ddd

Sur les distributions basées sur Arch :

yay -S ddd

Tout ce qui est basé sur Arch devra utiliser un helper AUR, car DDD n’existe pas dans ses dépôts officiels. Alternativement, vous pouvez installer DDD sur un système basé sur Arch sans helper AUR :

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

3. LLDB

LLDB fait partie du projet LLVM. La suite LLVM a gagné en popularité grâce à son flux de travail efficace. Elle est également devenue le débogueur par défaut pour Xcode et Android Studio de macOS. Certaines des principales fonctionnalités de LLDB incluent le support pour diverses intégrations de compilateurs et le débogage à distance. Il prend en charge les langages C (C, C++ et Objective-C).

Débogueur Linux Lldb

Pour ceux qui sont déjà familiarisés avec les commandes de base de GDB, LLDB semblera familier. Taper run ou r exécute le programme, et taper step ou s permet de parcourir ses sous-routines.

Pour l’installer :

Sur les distributions basées sur Ubuntu/Debian :

sudo apt install lldb

Sur les distributions Fedora/RHEL :

sudo dnf install lldb

Sur les distributions basées sur Arch :

sudo pacman -S lldb

4. Delve

Delve est un débogueur Linux simple, mais riche en fonctionnalités, pour le langage de programmation Go de Google. Vous pouvez l’utiliser pour interagir avec votre programme en temps réel et manipuler des choses comme des goroutines et des piles. Le débogueur lui-même est écrit en Go, offrant ainsi un environnement d’exécution identique à celui du programme que vous testez.

Delve fonctionne selon le même principe que GDB et LLDB, sauf qu’il dispose d’un ensemble de commandes uniques qui diffèrent grandement des deux autres. Il suffit de taper help une fois que vous êtes à l’intérieur et vous obtiendrez une liste complète de toutes les options de débogage qu’il vous offre.

Contrairement aux débogueurs plus généraux pour plusieurs langages, Delve propose des commandes plus spécifiques à Go qui vous permettent d’explorer plus en profondeur votre application pendant qu’elle s’exécute.

Utilisation de Delve pour examiner des goroutines et des threads Go spécifiques.

Pour l’installer :

Sur les distributions basées sur Ubuntu/Debian :

sudo apt install delve

Sur les distributions Fedora/RHEL :

sudo dnf install delve

Sur les distributions basées sur Arch :

sudo pacman -S delve

5. Xdebug

Alors que la plupart des gens apprennent à déverser leurs variables (connues dans les communautés PHP sous le nom de “dump & die”) pour découvrir ce qui ne va pas dans un certain aspect de leur code, il y a des fois où vous avez besoin de quelque chose de plus robuste qui peut vous faire traverser toutes vos routines. Xdebug offre cela en abondance pour les programmeurs PHP en herbe et vétérans.

C’est un débogueur Linux qui parcourt le code PHP ligne par ligne et montre exactement ce qui se passe pendant qu’une page web est traitée. Xdebug fonctionne également sur plusieurs IDE, y compris VSCode. Ses autres fonctionnalités incluent un profiler solide, un traceur de pile et la capacité de déverser le segment d’exécution complet.

Pour installer Xdebug :

Sur les distributions basées sur Ubuntu/Debian :

sudo apt install php-xdebug

Sur les distributions Fedora/RHEL :

sudo dnf install php-xdebug

Sur les distributions basées sur Arch :

sudo pacman -S xdebug

6. KDbg

KDbg est un débogueur GUI pour l’environnement de bureau KDE. Comme il fonctionne comme un front-end GDB tout comme DDD, vous obtenez toutes les fonctionnalités de GDB avec une interface utilisateur intuitive. Les programmeurs plus expérimentés apprécieront certainement une vue claire de toutes les variables tout en parcourant leur code, ainsi qu’un panneau entièrement dédié montrant ce que chaque registre de CPU contient. Ce n’est pas aussi facile à visualiser dans n’importe quel autre débogueur abordé ici.

Pour cette raison, KDbg est un excellent choix pour les programmeurs d’applications natives traditionnelles, des débutants qui commencent tout juste à apprendre aux vétérans les plus aguerris.

KDbg déboguant un programme en cours d'exécution écrit en C.

Pour installer KDbg :

Sur les distributions basées sur Ubuntu/Debian :

sudo apt install kdbg

Sur les distributions Fedora/RHEL :

sudo dnf install kdbg

Sur les distributions basées sur Arch :

sudo pacman -S kdbg

Remarque : Si vous utilisez une distribution basée sur Ubuntu ou Debian et ne trouvez pas le paquet pour kdbg dans les dépôts officiels, voici exactement ce que vous devez taper pour le créer vous-même :

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 est un débogueur de mémoire solide comme un roc qui offre de nombreux outils supplémentaires pour l’analyse logicielle. Il fonctionne à la fois sur Linux et Mac. De plus, vous pouvez l’utiliser comme un cadre et créer des outils d’analyse dynamique comme des profilers. Dans l’ensemble, Valgrind est un excellent choix pour les professionnels en raison de son riche ensemble de fonctionnalités et de sa variété d’outils qui surveillent la mémoire d’un programme pendant son exécution.

Valgrind détectant une fuite de mémoire dans un programme.

Pour installer Valgrind :

Sur les distributions basées sur Ubuntu/Debian :

sudo apt install valgrind

Sur les distributions Fedora/RHEL :

sudo dnf install valgrind

Sur les distributions basées sur Arch :

sudo pacman -S valgrind

8. strace

strace est un utilitaire en espace utilisateur pour Unix qui permet aux utilisateurs de tracer les appels système et les signaux directement depuis le terminal.

Débogueur Linux Strace

Les programmeurs peuvent l’utiliser pour déverser des traces de pile, filtrer les appels système, modifier les codes de retour, extraire des descripteurs de fichiers, et bien plus encore.

Plus important encore, strace vous permet de vous attacher à des programmes en cours d’exécution. Cela vous permet d’explorer plus en profondeur tout logiciel que vous exécutez sur votre machine pour en apprendre davantage sur ce qui pourrait provoquer un crash.

Pour installer strace :

Sur les distributions basées sur Ubuntu/Debian :

sudo apt install strace

Sur les distributions Fedora/RHEL :

sudo dnf install strace

Sur les distributions basées sur Arch :

sudo pacman -S strace

L’arsenal vous attend

Avec ces outils, vous pouvez examiner, analyser et analyser votre code de manière qui auparavant aurait pu sembler inaccessible. Il peut y avoir une petite courbe d’apprentissage à suivre, mais cela en vaut vraiment la peine. Si vous êtes sérieux au sujet de la programmation sous Linux, apprendre à utiliser ses débogueurs vous fera gagner beaucoup de temps sur le long terme.

Maintenant que vous avez les meilleurs débogueurs Linux, il est temps pour vous de trouver les meilleures distributions Linux pour les développeurs et les programmeurs.

Image crédit : Toutes les images par l’auteur.