Home
Subject
Contents
1. L3 Info amp L3 Miage SYRI1 2 Utilisation du d bogueur DDD Si on souhaite mettre au point un programme l aide d un d bogueur il faut le compiler ainsi que tous ses modules avec l option g comme indiqu ci dessous gcc Wall g o test_list o test_list c Pour viter d avoir modifier chaque fois toutes les r gles du makefile on peut d finir des variables qui permettent plus de g n ricit Par exemple ajouter au d but du makefile la ligne CFLAGS Wall g permet de d finir une variable CFLAGS laquelle on pourra ensuite faire r f rence en crivant CFLAGS dans les d finitions de r gles du makefile comme dans l exemple ci dessous gcc CFLAGS c modulel c 1 Modifiez le makefile de mani re ce que les appels gcc se fassent avec l option g ou pas suivant la valeur affect e CFLAGS en d but de makefile 2 Relancez une compilation expliquez pourquoi le makefile ne refait pas une mise jour des modules objets et du programme ex cutable 3 Comment r soudre le probl me Le d bogueur DDD est une interface graphique qui facilite l utilisation du d bogueur gdb de la cha ne gcc il se lance par la commande ddd ou ddd test si test est le programme a tester Vous trouverez un manuel d utilisation l adresse suivante http hiko seijuro developpez com articles ddd 3 R alisation 3 1 Travail effectuer 1 Compl tez le fichier list c qui fournit l
2. finit les variables et les identificateurs export s respectivement par le module list c et de la directive include lt fichier h gt Indice n 2 il faut parfois indiquer au compilateur o trouver les fichiers d ent te pour cela on utilise l option I de gcc Par exemple gcc I include indique qu il faut aller chercher les fichiers ent tes h dans le r pertoire include Une fois le probl me r solu compilez avec l option c le fichier src list c Est il ex cutable Reliez maintenant les deux modules pour obtenir le programme ex cutable l aide de la commande ci dessous gcc 0 test_list test_list o list o Ex cutez ce programme par la commande ci dessous et observez les r sultats sur la sortie standard test_1list Le message segmentation fault indique que le programme a ex cut un acc s m moire une adresse ill gale soit cause d un d bordement de tableau ou de l utilisation d un pointeur mal ou non initialis Recompilez le module test_list c en utilisant l option Wa11 qui demande au compilateur d afficher tous les messages d avertissement warning rep r s lors de la compilation du module Qu en d duisez vous En utilisant les r sultats de la question pr c dente corrigez les erreurs pr sentes dans le module test_list cet v rifiez ensuite le bon fonctionnement du programme pour r pondre cette question il peut tre utile de lire la description fournie en partie B d
3. c est suppos offrir les fonctions suivantes pour une description plus d taill e des sp cifications veuillez vous reporter aux sources du module 1ist c tudi es en TD Seule les fonctions insert_head et create _ element sont d j impl ment es e list _elem t create _ element int val cr e un nouveau maillon dont le champ next vaut NULL et dont le champ value vaut l entier val pass en param tre La fonction retourne NULL en cas d chec sinon un pointeur sur le nouveau maillon e void free element list _elem_ t 1 lib re la m moire allou e un maillon e int insert_head list_elem t l int val ajoute un l ment en t te de la liste 1 d signant cette t te de liste A l issu de l ex cution 1 pointe sur la nouvelle t te de liste La fonction retourne 0 en cas de r ussite 1 en cas d erreur e int insert _tail list_elem t l int val ajoute un l ment en queue de la liste 1 d signant cette t te de liste A l issu de l ex cution 1 pointe sur la t te de liste La fonction retourne 0 en cas de r ussite 1 en cas d erreur e int find element list_elem t l int pos retourne le maillon la posi tion pos dans la liste le 1 l ment est la position 0 La fonction retourne un pointeur sur le maillon en cas de r ussite NULL en cas d chec e int remove _ element list _elem t l int val supprime de la liste le premier l ment de la liste de valeur val 1 d signant la t
4. sous Linux les ex cutables n ont pas l extension exe comme c est le cas sous DOS Window L ex cution de ce programme se fait alors simplement par la commande nomprog Recompilez le programme de mani re produire un ex cutable nomm hms et v rifiez son bon fonctionnement n l ex cutant dans le terminal de commande 1 6 L3 Info amp L3 Miage SYR1 2 Programme C form de plusieurs modules 20 minutes En r gle g n rale un module est form d un fichier c contenant le code source du module et d un fichier d ent te extension h qui permet d exporter les d finitions des identificateurs du module donn es sous programmes etc Lorsque l on compile un module on utilise l option c du compilateur celui ci produit alors un fichier interm diaire fichier objet d extension 0 qui n est pas directement ex cutable Cr ez un r pertoire sur votre compte utilisateur et copiez y en utilisant la commande cp r le contenu du r pertoire share 13info syrl tp_liste Placez vous ensuite dans le r pertoire nouvellement cr e celui ci contient les codes source partiels d un TP sur la mise en uvre de listes cha n es en C 1 Lancez la compilation de src test_list c par la commande ci dessous gcc e src test_list c Celle ci produit une erreur de compilation d o provient cette erreur 2 Comment corriger le fichier test_list c Indice n 1 on dispose d un fichier ent te list h qui d
5. te de liste et lib re l espace m moire utilis par le maillon ainsi supprim La fonction retourne e Oen cas de r ussite un maillon de valeur va1 a t trouv dans la liste e 1en cas d chec pas de maillon de valeur va1 trouv dans la liste e void reverse list list_elem_ t 1 modifie la liste en renversant l ordre de ses l ments le premier devient le dernier le second l avant dernier etc Attention ne pas cr er de fuite m moire 4 6 L3 Info amp L3 Miage SYR1 2 Module de test des listes cha n es Vous disposez galement d un programme de test test_list normalement situ dans le sous r pertoire bin Pour le lancer il vous suffit d crire bin test list Ce programme permet gr ce des commandes clavier d ajouter supprimer des l ments de la liste et de d placer l l ment courant dans la liste Les commandes sont r sum es ci dessous t ajout en t te de liste d une cha ne saisie au clavier a ajout en queue de liste d une cha ne saisie au clavier recherche et affichage de l l ment n i de la liste s suppression d un l ment de valeur donn e r inversion de la liste x fin du programme Le contenu de la liste est affich l issu de chaque op ration sous la forme valeur_1 gt valeur 2 gt gt valeur _n Par ailleurs le programme signale les ventuelles fuites m moire caus es par les mises en uvre des fonctions 5 6
6. L3 Info amp L3 Miage SYR1 iStIC TP2et3 Introduction C Partie A prise en main de gcc et makefile L objectif de cette partie est de vous familiariser avec le langage C et sa cha ne de d veloppement bas e sur le compilateur gcc et de vous apprendre utiliser des makefile lorsque vous d veloppez des programmes en C 1 Programme C form d un seul module 20 minutes 1 Cr ez un r pertoire sur votre compte utilisateur et copiez y en utilisant la commande cp r le contenu du r pertoire share l3info syr1 tp_c Placez vous dans ce r pertoire et essayez de compiler le programme hms c l aide de la commande gcc Wall nomfichier c V rifiez la signification de l option Wal 1 Editez le code source du programme que constatez vous Corrigez l indentation du programme ainsi que ses erreurs Pour corriger l indentation vous pouvez utiliser la commande indent condition d avoir ferm votre diteur Relancez une compilation afin de vous assurer de la correction du programme et l aide de la commande ls ail retrouvez le nom du fichier produit lors de cette tape La commande pr c dente en 4 a g n r un fichier a out qui est l ex cutable correspondant au programme hms c On peut l ex cuter par la commande a out Si on souhaite pr ciser un nom d ex cutable particulier on utilise l option 0 de gcc gcc 0o nomprog nomfichier c La commande produit alors un ex cutable appel nomprog
7. a mise en uvre des listes cha n es on rappelle en particulier qu il faut prendre le plus grand soin dans la gestion des pointeurs par exemple toujours s assurer que la variable 1ist_elem_t 1 est diff rente de NULL avant d crire par exemple 1 gt next 2 V rifiez le bon fonctionnement de votre programme en ajoutant au makefile une cible tester qui teste de mani re non interactive vous utiliserez pour cela les redirections d entr es sorties le programme test_list en utilisant un fichier de jeu de tests commandes txt que vous compl terez 3 2 Conseils 1 Lisez bien les sp cifications des fonctions d taill es dans le fichier 1ist c avant de vous jeter la t te la premi re dans le codage 2 Assurez vous que vos sources compilent sans provoquer le moindre message de warning rappelez vous que les compilateurs C sont tr s permissifs Ce qui est consid r comme un warning en C provoquerait vraisemblablement une erreur de compilation en JAVA 3 Lorsque l on manipule un pointeur sur une structure on acc de ses champs non pas par l op rateur mais par l op rateur gt 6 6
8. des fichiers puis en relan ant le makefile l aide de la commande make 3 Compl tez dans le fichier makefile l entr e clean permettant d effacer tous les fichiers objets o ainsi que l ex cutable produit 4 Compl tez dans le fichier makefile l entr e listing permettant de produire un fichier pdf partir des sources des fichiers c et h en utilisant la s quence de commandes a2ps o listing ps include list h src list c src test_list c ps2pdf listing ps rm listing ps 5 V rifiez le bon fonctionnement de cette r gle en l appelant par la commande make listing 3 6 L3 Info amp L3 Miage SYR1 Partie B listes cha n es en C 1 Module de mise en uvre de listes cha n es On s int resse une mise en uvre de listes cha n es en langage C similaire celle tudi e en TD On rappelle que le type liste est repr sent l aide d une structure 1ist_elem_t dont la d finition est donn e typedef struct s_ list int value identifiant du maillon struct s_list next pointeur sur le maillon suivant list_elem_t Cette repr sentation est illustr e par la Fig 1 ci dessous list_head e list_elem t list_elem t list_elem t gt value 2 m gt value 7 rh value 9 next next nexEt NULL Figure 1 Repr sentation en m moire d une liste cha n e Le module 1ist
9. u sujet 2 6 L3 Info amp L3 Miage SYR1 3 Utilisation de l outil make 40 minutes Chaque fois que l on modifie un des fichiers source c ou h il faut recompiler les modules d pendant de ces fichiers et refaire l dition de lien pour obtenir un ex cutable jour Cette tache est tr s fastidieuse faire la main surtout quand le programme comporte de nombreux modules titre d exemple le noyau du syst me d exploitation Linux contient plusieurs centaines de modules C Il est bien s r possible de tout recompiler chaque fois mais ce genre d approche atteint rapidement ses limites d s lors que l on travaille sur des programmes cons quents car le temps de compilation devient prohibitif Le programme make dont le fonctionnement a t vu en cours permet justement d automatiser cette t che en ne recompilant chaque fois que ce qui doit l tre 1 Compl tez le fichier makefile du r pertoire tp_liste de mani re permettre l assemblage et l dition de lien du programme vu en 2 celui ci devra s assurer e Que les fichiers o produits lors de la compilation soient stock s dans le r pertoire obj pr vu cet effet e Que le programme ex cutable soit stock dans bin sous le nom test_list e Que les fichiers objets et l ex cutable soient jour par rapport leur code source c et aux fichiers d ent tes h dont ils d pendent 2 V rifiez le bon fonctionnement de votre makefile en modifiant un
Download Pdf Manuals
Related Search
Related Contents
Users Manual - HDTV Review Samsung Omnia 7 Lietotāja rokasgrāmata User Manual - Box Design by Pro FERTI-VIT - Europalomas Digitus 25-port Patch Panel Bodum Cofee Grinder User's Manual HF-LPC100 Wi-Fi/Bluetooth Module User Manual Copyright © All rights reserved.
Failed to retrieve file