GDB: Debogueur GNU Multi-langage Permet l’inspection du source pendant l’exécution Permet le débogage post-mortem Bogue (de châtaigne), terme recommandé.

Slides:



Advertisements
Présentations similaires
Algorithmes et structures de données (avancées) Cours 1+2
Advertisements

Premier programme en C :
La boucle for : init7.c et init71.c
Chapitre annexe. Récursivité
Introduction. Les pointeurs Bête noir des programmeurs Pas daide de Visual Studio Sauf en utilisant les « break point » Pas toujours intuitif Facile de.
Introduction à l’Algorithmique
Algorithmique et évaluation
Synchronisation des processus père - fils
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
Page 1 Déboguer un programme Java Jacques Lonchamp.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
La fonction Style Permet de créer des types de texte, par exemple
12 novembre 2012 Grégory Petit
Firebug Dévermineur Debugger.
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Récursivité.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Définition d’un maillon de liste
Biologie – Biochimie - Chimie
Faculté I&C, Claude Petitpierre, André Maurer 1 JavaCC Java compilers compiler (version générant du Javascript)
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Gestion des événements liés à la fenêtre et aux périphériques dentrée.
Développer en C avec Eclipse Introduction Création d'un projet Ajout de fichiers Compilation Exécution Utiliser le débogueur Département dinformatique.
Test et débogage Tests unitaires. Gestion d’erreurs. Notion d’état, de pré-condition et de post-condition. Assertion. Traces de programme. Débogueur et.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
GPA435, GPA – ÉTS, T. Wong Génie de la production automatisée GPA435 Système dexploitation et programmation de système Chapitre 6 Partie II 2014.
I&G- chapitre 11-La logique Logarithmique -Mme Roulaud
Cours N°2 Base de Données & Langage SQL
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Répéter dans un programme avec une Instruction itérative
Exemple de gestion d'un buffer clavier en liste circulaire
1 GPA435 Systèmes d’exploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 8 Filtres UNIX.
Les assertions en Java.
Utilisation avancée de linux
Gestion de Fichiers GF-3: Structures d’Enregistrements, Acces Sequentiel et Direct, Manipulation de classes en C++ (Base sur des segments des Chapitres.
 CREATE TABLE  DROP TABLE  ALTER TABLE  INSERT  UPDATE  DELETE  SELECT interrogation 2 Instruction de mise à jour structure.
Programmation Système et Réseau (sous Linux)
JavaScript Nécessaire Web.
B.Shishedjiev -Débogueur1 Déboguer? Comment trouver et corriger les erreurs?
Exploration de la programmation android Formation Assurer par: Club FreeWays Réalisé par: BOUHJJA Lamia.
Création d’une application complète
CYCLE 6 : FONCTIONS Faire un programme en C avec des FONCTIONS 1- A quoi servent les FONCTIONS ? 2- Comment écrire un programme avec FONCTIONS ? 3- Comment.
Architecture Chapitre 4 Interruptions. 2 Plan Principe Schéma d’acquisition Les états d’une interruption Décentralisation des interruptions Exemples.
Chapitre 9 : La machine MIASM
TD0 - Rappels. Acquis du programme 1 ère année Analyser et modéliser : un problème, une situation ; Imaginer et concevoir : une solution algorithmique.
Décomposition et paramétrage des algorithmes
Un survol du language C.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
ISBN Chapitre 10 L'implémentation des sous- programmes.
Variables et environnement utilisateur W. Barhoumi.
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
Tutorat en bio-informatique Le 12 octobre Exercices 3 et 4 (MAT1400) - solutions La série du binôme (chap. 8.8) –Trouver la série entière et le.
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
6ième Classe (Mercredi, 17 novembre) CSI2572
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
S. Domas Système d’Exploitation Make et la construction d’exécutables 1ère annéeIUT Belfort-Montbéliard.
ROLE DES DIFFERENTS ELEMENTS MISE AU POINT ET MODIFICATION Nous allons maintenant faire quelques exercices de mise au point et de modification. Ces exercices.
1 Cpt JAVA : Eclipse (bis) Debogage. 2 Code à tester public class siecle { int t; public siecle() { super(); t=1; } static public boolean vrai() { return(false);
PRO-1027 Programmation Scientifique en C
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Algorithmique Boucles et Itérations
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
Outils logiciel pour la programmation en C. 2 Automatiser la compilation : make make est un utilitaire présent dans toute les distribution de linux >
Transcription de la présentation:

GDB: Debogueur GNU Multi-langage Permet l’inspection du source pendant l’exécution Permet le débogage post-mortem Bogue (de châtaigne), terme recommandé par la DGLFLF pour bug (insecte) 1

Flags Compilation normale d’un programme: – gcc [flags] -o – Exemple: gcc -Wall -Werror -ansi prog1.c -o prog1.x On ajoute l’option –g pour gdb – gcc [other flags] -g -o – Exemple gcc -Wall -Werror -ansi -g prog1.c -o prog1.x Ne pas demander d’optimisations! 2

Usage Juste: “gdb” ou “gdb prog1.x” On obtient une invite: – (gdb) Si on n’a pas spécifié de programme, on le met ici: – (gdb) file prog1.x prog1.x est le programme à charger pour exécution, et “file” est la commande pour le charger 3

À savoir gdb a un shell: on peut retrouver l’historique des commandes avec les flèches de direction, souvent la touche “tabulation” permet de compléter la commande. Il y a un help – (gdb) help – (gdb) help [command] Le programme sous gdb a le même comportement que celui compilé sans –g sauf – Si la bogue vient des optimisations – Si la bogue vient de l’initialisation (oubliée) des variables – Autrement dit, si différence de comportement, chercher de ces côtés là. 4

Lancer le programme (gdb) run Lance le programme – Si le programme n’a pas d’erreur, l’exécution se déroule normalement jusqu’à son terme. – Si il y avait un problème à l’exécution normale, le programme plante maintenant avec des indications utiles sur l’endroit et le contexte: Program received signal SIGSEGV, Segmentation fault. 0x in sum array region (arr=0x7fffc902a270, r1=2, c1=5, r2=4, c2=6) at sum-array- region2.c:12 5

S’il y a une bogue On veut pouvoir – Arrêter le programme – Mettre des points de surveillance Sur position Sur des variables – Exécuter pas par pas – Modifier des variables 6

Contrôle-C Arrêter le programme par contrôle-C rend la main « là où le programme est ». On peut alors exécuter toutes les commandes de gdb Utile si le programme part en boucle Attention à ce que l’on peut être au fond d’une fonction système (compilée sans l’option –g): commande finish dans ce cas. 7

Points d’arrêts (breakpoints) Utiles pour arrêter le programme pendant son exécution à des endroits convenus Première forme: par fichier/numéro de ligne – (gdb) break file1.c:6 – (gdb) break 6 – Ceci met un point ligne 6, dans file1.c. Si (et seulement si) le programme passe par là, il va s’arrêter et donner la main. On peut omettre le nom du fichier si pas d’ambiguïté. On peut mettre autant de points d’arrêt que l’on veut. 8

Autres formes On peut s’arrêter à l’invocation d’une fonction. Si on a la fonction: – int my_func(int a, char *b); On peut forcer l’arrêt à chaque appel de my_func – (gdb) break my_func 9

Lancer et relancer après arrêt (1) Pour lancer le programme sous gdb, commande run (r) – (gdb) run Une fois arrêté, on peut repartir en émettant la commande continue (c). (gdb) continue On peut toujours remettre la commande run (repart depuis le début) 10

Lancer et relancer après arrêt (2) Avancer l’exécution d’une ligne: step (s) – (gdb) step Avancer l’exécution d’une instruction: next (n) – (gdb) next La différence est que next saute par-dessus l’appel des routines, alors que step entre dedans. On peut s’épargner de la frappe en tapant juste, la commande précédente (next ou step) sera répétée. 11

Examen des variables Commande print – (gdb) print my_var En hexadécimal – (gdb) print/x my_var Attention à la visibilité des variables: Gdb s’intéressera à la variable visible là où vous êtes. 12

Surveillance de variables (watchpoints) De même que les points d’arrêts agissent quand le programme atteint une position, les points de surveillance agissent quand une variable est modifiée. – (gdb) watch my_var Chaque fois que my_var sera modifiée, gdb s’arrêtera et donnera la main, montrant ancienne et nouvelle valeurs. Attention encore à la visibilité des variables: il peut y avoir des homonymes. Gdb s’intéressera à la variable visible là où vous posez le watchpoint. De ce fait, il peut être nécessaire de poser un breakpoint juste pour pouvoir poser un watchpoint. 13

Forcer une variable On peut forcer la valeur d’une variable – (gdb) set var my_var = val – (gdb) continue Attention à la visibilité des variables 14

Autres commandes where (w) ou backtrace (bt): donne la pile d’appel au moment de l’invocation de la commande. Par exemple quand le programme est planté. finish (f): termine la fonction courante et rend la main. delete (d): détruit un point d’arrêt. info breakpoints: donne la liste. 15

Complications utiles Souvent le souci n’apparaît que sur une condition particulière qui demande beaucoup de passages par le même breakpoint. Arrêts conditionnels: – (gdb) break file1.c:6 if i >= ARRAYSIZE – Ici l’arrêt ne se fera que si la condition est vraie. – On peut mettre plusieurs points d’arrêt au même endroit avec des conditions différentes (effet d’un ou logique) 16

Post-mortem – Le fichier core qui apparaît après un ‘core dump’ peut être utilisé par gdb pour un débogage post- mortem: gdb core – Les commandes d’examen (qui n’impliquent pas une exécution) peuvent être utilisées: where print Elles donneront l’information demandée au moment du plantage. 17