Les outils de déverminage sous Linux

Posté par (page perso) . Modéré par Brice Favre.
Tags :
0
19
août
2002
Linux
Le DeveloperWorks d'IBM nous explique qu'il y a plusieurs façons d'observer l'exécution d'un programme dans l'espace utilisateur: vous pouvez utiliser un dévermineur (debugger), avancer pas à pas dans l'exécution du-dit programme et afficher son état.

Cet article décrit les (certaines en tout cas :) ) méthodes qui peuvent être utilisées pour déverminer des programmes qui s'exécutent sous Linux. Il passe en revue quatre scénarios dont le très célèbre "segmentation fault", problèmes d'allocation mémoire et même les fameux "kernel oops"...

Note du Rédacteur: Les développeurs chevronnés n'apprendront pas grand chose, mais d'autres (re)découvriront ces outils qui font partie du quotidien :-)
J'ai rajouté quelques liens pour compléter

Aller plus loin

  • # da DevelopperWorks Page ?

    Posté par . Évalué à -10.

    Non, rien...

    PS: déverminage, c'est vraiment laid comme mot...
    • [^] # Re: da DevelopperWorks Page ?

      Posté par . Évalué à 5.

      Dans le même genre, scénarii, réussit le tour de force d'être à la fois mal orthographié et incorrect:

      - mal orthographié car scenarii est le plusriel de scenario, mot italien qui ne prend pas d'accent.

      - incorrect car en français, on écrit scénario (avec un accent), dont le pluriel est scénarios. Utiliser le mot italien d'origine n'a pas de raison d'être et est d'un pédantisme extrème.

      [Je poste à -1 pour pas vous faire chier avec mon enculage de drosophiles, mais je compte sur vous pour me mettre à -42]
      • [^] # Re: da DevelopperWorks Page ?

        Posté par . Évalué à 10.

        Tiens, tant qu'on y est : l'académie française a tranché sur la traduction "officielle" de bug : c'est bogue. On dit donc un debogueur. Et j'aimerais savoir pourquoi on parle de ver dans cet article. Je ne vois que des histoires de bogues.

        A bon entendeur.
        • [^] # Re: da DevelopperWorks Page ?

          Posté par . Évalué à 5.

          On ne parle pas de vers, mais de vermines (dé-vermin(e)-age). c'est plutôt logique, non?
          C'est cohérent avec l'origine du mot bug (mais pas trop avec bogue)

          Autre chose : l'Académie Française propose, le peuple dispose. Ces pédants font comme s'ils régentaient la langue française, mais elle ne leur appartient pas (pas plus qu'aux seuls français, d'ailleurs, il y a beaucoup de francophones). Si leur décision "officielle" ne prend pas, c'est tant pis.
          D'autant qu'ils ont tendance à se planter (mèl, cédérom ... Que c'est moche. Refus de la féminisation des titres et métiers...)
          • [^] # PinaillageMan® est de Rrrrrretourrrrr ! (c'est moi)

            Posté par . Évalué à 10.

            L'Académie Française (AF), on aime ou on aime pas, c'est pas important. Que leur idées passent ou pas dans le grand-public, c'est le public qui décide, logique.

            Mais je me dois de relever les erreurs et omissions dans ce que tu dis :

            • À propos de mèl

              « mèl » n'a jamais été recommandé par l'AF, il a été proposé à une époque mais bon, ça c'est perdu. Ce qui est reconnu par l'AF c'est l'abbréviation « Mél. » choisie par le mincult et la dglf[1] pour avoir un équivalent à l'abbréviation « Tél. » pour « téléphone » dans les documents officiels tel que le JO [2]. Il est d'ailleurs explicitement noté que « Mél. » ne doit pas être utilisé comme substantif.

              Le terme officiel est « courrier électronique ».

            • À propos de la féminisation des titres et métiers

              Leur raisons sont clairement expliquées en [3] :
              En français le genre masculin est un genre non marqué et le genre féminin un mode marqué. Le genre masculin est utilisé pour representer ce qui n'est pas sexué ; le genre féminin, lui, marque explicitement les choses comme étant de sexe féminin.

              Ainsi, chercher à adapter au féminin les titres et métiers revient à créer des termes qui servent à explicitement montrer que la personne est une femme, alors que conserver le terme d'origine ne dénote que la fonction. De ce fait, beaucoup de femmes sont contre la féminisation des titres, car celle-ci forme une ségrégation explicite, ce qui est intélorable dans un république prônant l'égalité.

              La féminisation est un délire proposé par le gouvernement début 1984 et immédiatement combattu par l'AF [4]. La commission de terminologie désignée au départ pour la féminisation a fini par reconnaitre les défauts de sa démarche [5], et ce en grande partie grâce à l'AF.
              Malgré cela, L. Jospin a montré sa volonté de pousser vers une féminisation des titres et métiers ... suivi par le ministre de l'éducation [6]. Grand bien leur fasse, la plupart des femmes sont soit contre soit indifférente à cette féminisation, qui est à peu près aussi égalitaire qu'une parité obligatoire.


            Voilà, voilà. Sinon, cédérom c'est effectivement moche mais bon, tout le monde ne peut pas être génial tout le temps.

            Sinon, voir les académiciens comme des pédants n'est pas tout à fait exact. Il y en a, comme partout, mais l'AF a toujours été également composée d'auteurs plus ou moins rebelles et loin d'être des pédants (V. Hugo, M. Yourcenar, A. France, P. Valery, etc.). Bon, y'a aussi eu des connards (mais on évite de parler des gens condamnés à l'indignité nationale).

            Tant que j'en suis à pinailler, bogue pour parler de bug n'est pas proposé par l'AF mais par la dglf [7] (donc le mincult) pour diverses raisons, notamment celle d'avoir un terme officiel pour les publications officielles. La plupart du temps la dglf et l'AF sont en opposition, notamment parce que les réformes de la dglf vont vers un français écrit ressemblant au parlé tandis que l'AF refusent de laisser tomber l'histoire de la langue pour rien. Oublier son passé est la pire erreur qu'un homme puisse faire.

            [1] http://www.culture.fr/culture/dglf/(...)
            [2] http://www.culture.gouv.fr/culture/dglf/cogeter/2-12-97-mel.htm(...)
            [3] http://www.academie-francaise.fr/actualites/feminisation.asp(...)
            [4] http://www.academie-francaise.fr/langue/questions.html#feminisation(...)
            [5] http://www.culture.fr/culture/dglf/cogeter/feminisation/sommaire.ht(...) et plus particulièrement http://www.culture.fr/culture/dglf/cogeter/feminisation/conclusion.(...)
            [6] http://www.culture.fr/culture/dglf/cogeter/feminisation/accueil-fem(...)
            [7] http://www.culture.fr/culture/dglf/ressources/lexiques/flexique.htm(...)
            Et surtout l'infame fiche dans la base de termes de la dglf : http://www.culture.fr:8895/owa_dgpb/plsql/affichage.affiche_fiche?i(...)
            [ le plus drôle c'est que j'ai dû faire des tonnes de fautes dans ce post :) ]
            • [^] # Capilo-traction du jour ;op

              Posté par . Évalué à 3.

              Bon la bogue ça évoque la chataigne et puis dans la chataigne peut y avoir des vers, mines de rien!

              bon ça va -1 j'ai compris je retourne bosser, je dirais p'tet moins de conneries ;op
              • [^] # Re: Capilo-traction du jour ;op

                Posté par . Évalué à 6.

                Oui, la première explication que j'avais lue sur le terme "bogue" pour traduire bug était la suivante :
                - phonétiquement assez proche
                - la bogue est l'enveloppe _piquante_ de la chataîgne
                Ca m'avait bien plu : adopté.
                A coté de cela, les cédéroms et consorts ont l'air c*n.
            • [^] # Re: PinaillageMan® est de Rrrrrretourrrrr ! (c'est moi)

              Posté par . Évalué à 4.

              Là, je crois que tu m'as calmé.
              Euh, sinon, pour les fautes ...
              Non, je me tais, j'ai compris.
            • [^] # Re: PinaillageMan® est de Rrrrrretourrrrr ! (c'est moi)

              Posté par . Évalué à 6.

              Noter que "Logiciel" c'est bien joli comme mot.

              et cédérom c'est pratique au scrabble ;)
            • [^] # Mon grain de sable...

              Posté par (page perso) . Évalué à 3.

              Concernant la traduction de bug, voici mes propositions.

              Literralement bug signifie insecte. Historiquement ce terme vient qu'un insecte s'était coincé dans les rouage d'un mécanisme provoquant une panne. le terme est resté.

              En français la traduction la plus fidèle dans l'esprit devrait être "lézard". Ne dit on pas "ya un lézard" lorsque quelque chose ne va pas ? Mais je craints que ce soit plus une expression française que francophone. Les canadiens peuvent il comprendre une telle phrase ?

              Traduire par bogue ne me plait pas plus que cédérom car il s'agit juste d'appliquer une pseudo orthographe française a un mot anglais. Le mot obtenu est fade et sans histoire.

              Au final je traduit volontiers "bug" par "anomalie logicielle". C'est propre, explicite et dans le dico...
              • [^] # Re: Mon grain de sable...

                Posté par . Évalué à -6.

                tu sais d'où vient le mot budget ?
                • [^] # Re: Mon grain de sable...

                  Posté par (page perso) . Évalué à 7.

                  budget vient du mot anglais budget qui lui-même vient du mot français bougette diminutif de bouge.

                  J'ai bon ? ;-)

                  De plus, le terme budget a été abandonnée dans l'administration au début des années 60 au profit de l'expression "Loi de finances".

                  Héhé. Je fais le malin :o)
                  • [^] # Re: Mon grain de sable...

                    Posté par . Évalué à -1.

                    Qui fait le malin tombe dans le ravin.

                    T'as tout juste ; enfin c'était pour dire que l'adoption de mots étrangers avec ou sans adaptation de l'orthographe/de la phonétique, c'est pas nouveau, et ça fait partie de l'évolution des langues. Pourquoi ce serait à proscrire aujourd'hui plus qu'hier ?
                  • [^] # Re: Mon grain de sable...

                    Posté par . Évalué à 1.

                    Celui que je préfère (mais c'est dommage, vraiment) :
                    flirter, de l'anglais flirt, du français fleureter (compter fleurette).
                    Quelle pitié !
              • [^] # Re: Mon grain de sable...

                Posté par . Évalué à 2.

                >Mais je craints que ce soit plus une expression française que francophone[...]

                L'AF traduit pour la France uniquement, et non pour la francophonie ?
            • [^] # Re: PinaillageMan® est de Rrrrrretourrrrr ! (c'est moi)

              Posté par (page perso) . Évalué à 2.

              Excellente contribution de Jean-Yves Burlett !

              En effet, il ne faut pas confondre le genre de la fonction et le genre de la personne. C'est pourtant à cela que le gouvernement Jospin a contribué.

              On doit dire monsieur la sentinelle et madame le ministre et non l'inverse quand on maîtrise un peu la langue française. Le plus amusant c'est monsieur la sage-femme ;-))
              • [^] # Re: PinaillageMan® est de Rrrrrretourrrrr ! (c'est moi)

                Posté par . Évalué à 6.

                Moi je trouve que Madame la Gardienne des Sottes allait beaucoup mieux que Madame le Garde des Sceaux à cette chère Guiguoux.

                En plus c'est assez confusionnant :
                - avant la réforme, Madame le Ministre était une femme ministre, et Madame la Ministre était la femme de Monsieur le Ministre.
                - maintenant, cette subtile différence a été gommée au nom de l'égalité.

                En plus c'est n'importe quoi : L'égalité, ça ne consite justement pas à différencier les hommes et les femmes ministres, ni même à imposer des quotas de femmes, mais à donner autant de chances à une femme de devenir ministre qu'un homme.
                • [^] # Re: PinaillageMan® est de Rrrrrretourrrrr ! (c'est moi)

                  Posté par . Évalué à 3.

                  Justement, c'est pas l'égalité qui est visée et avec laquelle on nous gave, c'est justement la parité.

                  D'ailleurs, il naît plus de filles que de garçons, on devrait en tuer quelques unes pour avoir la parité.
                • [^] # Re: PinaillageMan® est de Rrrrrretourrrrr ! (c'est moi)

                  Posté par (page perso) . Évalué à 0.

                  Merci de nous rappeler qui était Madame la Gardienne des Sottes ;-))

                  Dans le même genre de turpitudes, la colonelle est la femme du colonel. Si en respectant les désirs de Guigoux, une femme est colonelle, son mari devrait alors être appelé colonel.

                  Maintenant, elle aura au moins le temps de retourner à l'école pour apprendre le français.
                  Légiférer sur la parité, c'est aussi stupide que la loi qui fixait la valeur légale de Pi ! C'était en Amérique du sud il me semble.
                  • [^] # Re: PinaillageMan® est de Rrrrrretourrrrr ! (c'est moi)

                    Posté par . Évalué à 3.

                    c'est aussi stupide que la loi qui fixait la valeur légale de Pi ! C'était en Amérique du sud il me semble

                    C'etait dans l'Etat d'Indiana, en 1897. Toute l'histoire est là: http://www-personal.umich.edu/~jlawler/aux/pi.html(...) .

                    Apparemment c'était proposé par un gars qui pensaient avoir découvert "les vraies formules" sur Pi, et voulait en faire profiter l'Etat (un peu comme maintenant des gens qui n'y connaissent rien apprennent aux physiciens la mécanique quantique ou la relativité, arrangées à leur sauce...). Il en profitait pour résoudre la quadrature du cercle, aussi...
              • [^] # Re: PinaillageMan® est de Rrrrrretourrrrr ! (c'est moi)

                Posté par (page perso) . Évalué à 3.

                Le plus amusant c'est monsieur la sage-femme ;-))

                Oui, celà aurait été amusant (autant que "sage-homme"), mais ça n'existe pas: on dit une sage femme et un maïeutiste.
      • [^] # Re: da DevelopperWorks Page ?

        Posté par . Évalué à -3.

        Pendant qu'on y est, plusriel ça vient de plusrâlisme.
        -1, bien sûr.
    • [^] # Re: da DevelopperWorks Page ?

      Posté par (page perso) . Évalué à 10.

      >PS: déverminage, c'est vraiment laid comme mot...

      Moi aussi je trouve, mais c'est marrant...
      Selon les posteurs de commentaires:
      - tu te fais descendre en flamme parceque tu utilise des termes anglo-saxons
      - tu te fais critiquer quend tu essayes de trouver des mots dans la langue de Molière...

      A quand un dictionnaire des mots conseillés dans les nouvelles de LinuxFr?
      • [^] # Re: da DevelopperWorks Page ?

        Posté par . Évalué à 9.

        Ben les mots du dictionnaire français, ce serait pas mal ;)

        (on y trouve bogue comme traduction officielle de bug)
      • [^] # Re: da DevelopperWorks Page ?

        Posté par . Évalué à -6.

        A quand un dictionnaire des mots conseillés dans les nouvelles de LinuxFr?

        plop !
        coin ! coin !
        DTC !
        42 !

        Et -1
      • [^] # Re: da DevelopperWorks Page ?

        Posté par (page perso) . Évalué à 5.

        Ben moi je préfère les termes anglo-saxons. Faut arrêter de traduire juste pour faire bien sur linuxfr. Personne n'utilise les termes genre "déverminage" dans la vie.

        Remarque ce qui me fait le plus mal c'est quand j'utilise un linux traduit en français (je sais pas qui a eu l'idée de traduire les messages d'erreur de la libc, mais je le maudit souvent). Ca me fait bizzare de lancer une commande en anglais, et que l'ordi me réponde en français.

        Et pour le dico des mots conseillés, ca n'engage que moi, mais linuxfr n'est pas un site sur le tricot, donc garder les mots que les informaticiens utilisent courramment me parait bien : bug, segfault, thread, bookmark, buffer... et surement pas bogue, erreur de segmentation, fil d'execution, favorie|signet, heu buffer ?
    • [^] # Re: da DevelopperWorks Page ?

      Posté par (page perso) . Évalué à 5.

      déverminage, c'est vraiment laid comme mot...

      C'est un mot qui représente bien ce qu'il veut dire, surtout que c'est un terme très usité dans l'industrie (la lourde, celle où l'informatique et le réseau se doivent d'être fiable).

      Sinon pour la remarque de ton titre, oui si tu veux, mais en tout cas ils ont le mérite de sortir des articles intéressants, denrées rares en ce moment.
  • # tout ca ?

    Posté par . Évalué à -3.

    Wahooo, que de commandes que je ne conaissais pas. merci IBM de me permettre d'approcher un peu le monde des développeurs.

    maintenant, je ne demanderais plus "pourquoi ca marche pas", mais j'essaierai de trouver tout seul... :)
  • # les debugger c'est pour les faibles

    Posté par . Évalué à 10.

    pour debugger un programme faut mettre des printf partout, tout le monde sait ca enfin!!!! :)

    hop -1
    • [^] # Re: les debugger c'est pour les faibles

      Posté par (page perso) . Évalué à 10.

      C'est le genre de trucs qu'il ne faut pas oublier d'enlever : un gros code de météo était ralenti d'un facteur 100 parce que il restait dans le code un printf. En fait, le printf brisait la vectorialisation du code et comme cela tournait sur un calculateur vectoriel, plus de perfs.
  • # Valgrind

    Posté par . Évalué à 10.

    Je trouve franchement *lamentable* qu'ils aient oublie valgrind (GPL)
    http://developer.kde.org/~sewardj/(...)

    A mon avis, bien plus puissant que tout ce qu'ils proposent.
    • [^] # Re: décevant

      Posté par (page perso) . Évalué à 10.

      L'article ne mentionne pas non plus dmalloc et mpatrol, ni les problèmes qu'on peut rencontrer quand le programme à débugger est multi-thread.

      Mais par contre, il se permet de traiter le débuggage en userland *et* en mode noyau en une petite page...

      Cet article est très en-dessous de ce que j'ai l'habitude de voir sur developerWorks...

      Dommage, car le sujet m'intéressait beaucoup (j'en ai chié sur un programme multithread à une époque ou efence ne l'était pas et où ce n'était pas médiatisé ; je ne sais pas s'il l'est aujourd'hui).
      • [^] # Re: décevant

        Posté par (page perso) . Évalué à 8.

        Désolé, je me suis mal exprimé sur la dernière phrase ; il fallait lire :

        "j'en ai chié sur un programme multithread à une époque ou efence n'était pas thread-safe et où ce n'était pas médiatisé"

        Et puisque vous m'avez lu de si bon coeur, ma bonne dame, vous avez droit à un cadeau Bonux : "efence pas thread-safe" signifiait que le malloc de efence (qui marche en remplaçant cette fonction de la libc, et probablement quelques autres) n'était pas réentrant donc quand y'avait un malloc en cours dans un thread puis un autre malloc qui commençait dans un autre... boum. Segmentation fault.
    • [^] # Re: Valgrind

      Posté par . Évalué à 9.

      Je trouve franchement *lamentable* qu'ils aient oublié valgrind (GPL)

      A la décharge de l'auteur de l'article :
      - Valgrind est assez récent dans sa version 1.0
      - il ne tourne pour l'instant que sur processeur x86
      - Valgrind ralentit beaucoup l'exécution d'un programme (entre 20 et 50 fois j'ai entendu dire) car il émule le processeur
      • [^] # Re: Valgrind

        Posté par . Évalué à 3.

        Certes valgrind transformera votre Althon 1Ghz en un Pentium II poussif, mais bon il est très impressionnant par la qualité des résultats obtenus !

        Mais aussi par sa fonctionnalité gdb-attach qui peut permettre d'attacher un gdb au processus a deb..verminer dès le moment où valgrind detecte une erreur, et alors ca c'est infaillible.

        Bon ok il manque encore un super debuggeur libre automatique pour gérer les problemes d'accès concurrents dans tout ca :-)

        N'empeche que cet article permet au moins au debutant de commencer a decouvrir le monde magique de la devermination.
    • [^] # Re: Valgrind

      Posté par (page perso) . Évalué à 3.

      > A mon avis, bien plus puissant que tout ce qu'ils proposent.

      Heu valgrind, c'est pas que pour trouver les "memory leaks" (fuites de mémoire pour ceux qui font du tricot :-) ?

      Moi je trouve très bien qu'ils parlent de strace, outil malheureusement sous-employé. Pourtant quand on lance un programme et qu'il segfaulte au démarrage, le premier réflexe c'est strace histoire de voir rapidement s'il me manque un fichier ou si j'ai un problème de droits.

      En plus strace est très utilise pour trouver les problème de perfs rapidement (sans aller de suite vers gprof).
  • # whow

    Posté par (page perso) . Évalué à 4.

    Ok, vouloir franciser certains mots, ca passe. Vouloir rendre plus clair certain termes pour les non-initiés, ok.
    Mais serieux, "deverminage", c'est n'importe quoi.
    Si il faut passer 5mn devant chaque mot pour comprendre ce qu'est une "vermine" (bug), alors qu'un autre mot est "officiellement" adopté par la france, a savoir "boggue", je comprend plus.
    A la limite "deboggage" donc, mais "deverminage", c'est honteux.


    -1 paske de toute facon y'en a 50 qui vont (encore) gueuler
    • [^] # Re: whow

      Posté par . Évalué à 10.

      Si en plus vous ne vous mettez pas d'accord sur l'orthographe de ces *@$^% de termes francisés (boggue ou bogue ?), c'est la fin des harcicots...
      De toute façon, quand on veut postuler chez une SSII, il faut employer les termes anglophones de OOiner (e-marketing, B2B, Business Developer...).
      • [^] # Je poursuit le troll

        Posté par . Évalué à 8.

        Moi, j'aime bien le mot coquille qui est utilisé pour désigner une erreur dans l'imprimerie et qui rappele vaguement le terme bogue ( la coquille des châtaignes )
        Après tout, l'informatique est l'évoution logique de l'imprimerie. :-)
        • [^] # Re: Je poursuit le troll

          Posté par (page perso) . Évalué à 10.

          Donc au lieu de dire "je me fout de windows" il faut dire "je m'en tamponne le coquillard"?

          J'ai bien compris?
        • [^] # Re: Je poursui<b>s</b> le troll

          Posté par . Évalué à 10.

          j'aime bien le mot coquille qui est utilisé pour désigner une erreur dans l'imprimerie

          En fait c'est pour dire de façon polie qu'il y a une couille dans l'impression, ça date de l'époque où on travaillait avec des caractères en plomb; quand un "q" se glisse par inadvertance entre le "o" et le "u" ça donne : coquille
          (je ne suis pas sûr à 100% de cette histoire mais c'est ce que j'ai entendu)
          • [^] # Re: Je poursui<b>s</b> le troll

            Posté par . Évalué à -1.

            "Coquille", ce serait du vieil anglais ?

            Je croyais que cela avait été introduit parceque le terme anglais pour désigner une erreur d'impression était "cork-ill".

            ;-)

            Hop, -1.
  • # COCA

    Posté par . Évalué à 3.

    Ils oublient COCA et son langage de requêtes en Prolog. C'est cool et puissant. Pas vrai Pascal? ;-)
    • [^] # Re: COCA

      Posté par . Évalué à 2.

      Il se télécharge où ce petit joujou ? Je n'ai pas trouvé de homepage. Juste un article de l'INRIA (Mireille Ducassé).
    • [^] # Re: COCA

      Posté par . Évalué à 2.

      COCA, ou le projet qui a fait fremir des generations d'etudiants :-)

      Cela dit si c'est l'expert en compilation qui nous le conseille, c'est ptet bien... enfin faut encore réussir a ecrire des requetes en prolog pour dire au debuggeur de faire le boulot :-p

      NB1: Ca mériterait ptet d'etre utilise, si kelkun sait ou trouver une release + doc utilisable...?

      NB2: COCA(-10-final?) etait cense etre releasé cette année, mais on ne trouve que quelques références/rapports dessus..

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.