Linux - Debugging avancé
Formation créée le 30/07/2024. Dernière mise à jour le 08/09/2025.
Version du programme : 1
Version du programme : 1
Type de formation
Formation présentielleDurée de formation
35 heures (5 jours)Linux - Debugging avancé
Objectif de formation : Maîtriser les techniques avancées de debugging sous Linux, en mettant l'accent sur l'observabilité, l'analyse de performance, et la sécurisation des systèmes. Développer une expertise dans l'utilisation d'outils modernes pour diagnostiquer et résoudre des problèmes complexes à tous les niveaux (système, utilisateur, noyau).
Objectifs de la formation
- Comprendre et utiliser les outils de debugging avancés sous Linux
- Diagnostiquer et résoudre des problèmes systèmes et applicatifs complexes
- Analyser et interpréter les traces et logs pour le debugging
- Utiliser des techniques de profiling pour optimiser les performances
- Appliquer des méthodes de debugging pour les environnements de production
- Analyser des mécanismes de synchronisation dans le noyau Linux
- Débugger des systèmes post-mortem en analysant des crash dumps avec des outils avancés
- Utiliser eBPF pour profiler et tracer des applications et systèmes
Profil des bénéficiaires
Pour qui
- Administrateurs systèmes
- Développeurs logiciels
- Ingénieurs DevOps
- Exploitants systèmes ou applicatifs
Prérequis
- Bonnes connaissances de l’utilisation de Linux
Contenu de la formation
Introduction au debugging sous Linux (2 heures)
- Concepts fondamentaux du debugging
- Importance du debugging dans l'administration système et le développement
- Présentation des outils de debugging disponibles sous Linux
- Concepts d'observabilité et importance dans les environnements modernes
Outils de debugging de base (5 heures)
- Utilisation de gdb pour le debugging des applications
- Utilisation de strace pour le suivi des appels système
- Utilisation de lsof pour la surveillance des fichiers ouverts
- Utilisation de dmesg et des logs du noyau pour le debugging système
- Utilisation de top, htop et ps pour la surveillance des processus
- Présentation de lsof, dmesg et des outils classiques en les reliant aux outils modernes
- Illustration des bases avec un cas d’étude utilisant strace et dmesg
- Travaux pratiques : Utilisation des outils de base pour diagnostiquer et résoudre des problèmes simples sur des applications et des systèmes
Debugging avec GDB (4 heures)
- Techniques avancées de gdb : breakpoints, watchpoints, et conditionnels
- Analyse des core dumps pour le post-mortem debugging
- Debugging de programmes multi-threadés avec gdb
- Scripts et automatisation avec gdb
- Mise en œuvre de scripts et d’automatisations pour des scénarios complexes
- Travaux pratiques : Debugging avancé d'une application C/C++ multi-threadée avec gdb
Tracing et logging avancé (4 heures)
- Utilisation de ltrace pour le suivi des appels de bibliothèque
- Utilisation de systemtap pour le tracing des événements noyau et utilisateur
- Utilisation de perf pour le profiling et l'analyse des performances
- Analyse avancée des logs avec journalctl et rsyslog
- Utilisation d’eBPF et de ftrace pour des analyses détaillées
- Tracing global du système avec Kernelshark et LTTng
- Travaux pratiques : eBPF et perf pour profiler une application critique
- Travaux pratiques : Tracing d'une application avec systemtap et analyse des performances avec perf
Debugging des problèmes système (4 heures)
- Analyse et résolution des problèmes de mémoire avec valgrind et memcheck
- Debugging des problèmes de disque et de fichiers avec iostat, iotop et blktrace
- Analyse des pannes système et utilisation des outils de crash dump (kdump, crash)
- Debugging des problèmes de démarrage avec bootchart et systemd-analyze
- Résolution d’erreurs mémoire avec massif et libefence
- Études approfondies des mécanismes de synchronisation du noyau
- Travaux pratiques : Résolution des problèmes de mémoire et de disque sur un système Linux
Debugging des problèmes réseau (4 heures)
- Utilisation de tcpdump et wireshark pour l'analyse des paquets réseau
- Debugging des problèmes de connectivité avec ping, traceroute et netstat
- Analyse des performances réseau avec iftop et bmon
- Debugging des applications réseau avec nc et telnet
- Travaux pratiques : Analyse des paquets réseau avec tcpdump et résolution des problèmes de connectivité
Debugging des applications (4 heures)
- Utilisation de strace et ltrace pour le debugging des applications
- Analyse des performances des applications avec gprof et perf
- Debugging des applications Java avec jstack, jmap et jconsole
- Debugging des applications Python avec pdb et py-spy
- Debugging d’applications multilingues (C++, Python) en utilisant Valgrind et py-spy
- Travaux pratiques : Debugging d'une application Java et Python avec les outils appropriés
Debugging et sécurité (4 heures)
- Analyse des attaques et debugging des problèmes de sécurité
- Utilisation de auditd pour le suivi des événements de sécurité
- Debugging des politiques de sécurité avec SELinux et AppArmor
- Utilisation de chkrootkit et rkhunter pour la détection des rootkits
- Étude approfondie des politiques SELinux, AppArmor, et leurs implications
- Utilisation avancée d’auditd pour suivre les événements critiques
- Travaux pratiques : Mise en place et debugging des politiques de sécurité avec SELinux et AppArmor
Méthodologies de debugging (4 heures)
- Approche systématique du debugging : identification, reproduction, isolation, résolution et prévention
- Utilisation de scripts et d'automatisation pour le debugging
- Collaboration et communication efficace dans le processus de debugging
- Documentation et partage des connaissances
- Travailler sur des cas simulés post-mortem (crash dumps)
- Documentation des analyses avec outils adaptés (Kernelshark, perf)
- Travaux pratiques : Application des méthodologies de debugging sur des cas pratiques
Équipe pédagogique
Professionnel expert technique et pédagogique.