Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonctionnement symboles de débogage

Sujet résolu
    20 juin 2019 à 15:38:40

    Salut à tous,

    En utilisant des options de compilation permettant d'ajouter les symboles de débogage dans un binaire (par exemple -g avec gcc) ou dans un fichier séparé, il est ensuite possible d'utiliser un débogueur et d'analyser un programme.

    Que sont exactement ces symboles ? S'agit-il simplement d'une partie du code source originel ? D'annotations apposées à certains endroits du programme ?

    J'ai bien conscience que ma question est un peu hors-sujet mais je n'ai pas trouvé de forum adéquat où la poser :D

    Merci d'avance !

    • Partager sur Facebook
    • Partager sur Twitter
      20 juin 2019 à 17:52:00

      Salut,

      Je pense que tu es dans le bon forum :)

      Les symboles de débogages sont en général au format DWARF2.

      Ton code binaire est en général constitué de plusieurs sections - les plus connues sont .data dans laquelle sont mises les constantes, et .text dans laquelle est mis le code exécutable.

      Utiliser le format -g ne change pas le code exécutable. Par contre, ça va rajouter des sections, propres au format DWARF2, qui vont indiquer des infos de correspondance entre registre du processeur et variable du C de ton code source, correspondances entre les instructions processeurs et les instructions C, etc.. Ce qui va donc augmente la taille de ton fichier exécutable.

      Le débogueur, lui, n'a normalement accès qu'à la valeur de tes registres, et aux instructions processeurs étant exécutées. Grâce au format DWARF2, il a aussi accès aux correspondances, ce qui lui permet de t'afficher précisément les valeurs qu'ont telle ou telle variable du C, ainsi que de t'indiquer à quelle ligne du C t'en es.

      En espérant que ça réponde à ta question :)

      Plus d'info sur DWARF2 : http://www.dwarfstd.org/doc/Debugging%20using%20DWARF-2012.pdf

      Et puis tant qu'à faire, des infos générales sur les sections : https://en.wikipedia.org/wiki/Executable_and_Linkable_Format

      -
      Edité par potterman28wxcv 20 juin 2019 à 17:53:51

      • Partager sur Facebook
      • Partager sur Twitter
        20 juin 2019 à 19:04:17

        Merci pour ta réponse.

        Donc, si je résume correctement, les symboles de débogage sont en fait la correspondance en langage "haut niveau" des instructions en langage machine répartie dans des sections dédiées ajoutées au programme (comme à la page 10 de ton pdf).

        C'est pour cette raison que la taille de l'exécutable change sensiblement lorsqu’ils sont activés. C'est également parce qu'il est aisé de reconstruire le code source avec les symboles de débogage qu'il est déconseillé aux concepteurs de logiciels propriétaires de les laisser accessibles.

        J'ai tout bon ? :ange:

        • Partager sur Facebook
        • Partager sur Twitter
          20 juin 2019 à 21:46:29

          Oui c'est exactement ça !

          A titre d'exemple récent tu as le projet de reverse engineering du jeu vidéo diablo 1 (le projet s'appelle devilution) qui a pu réussir surtout parce que l'auteur a trouvé une version avec les symboles de debug sur le port PS1 de la version japonaise..

          https://github.com/diasurgical/devilution/blob/master/README.md

          • Partager sur Facebook
          • Partager sur Twitter
            20 juin 2019 à 22:29:49

            J'ai compris, encore merci !

            C'est par ailleurs étonnant que l'entreprise Blizzard n'ait pas lancé des poursuites pour le principe ^^

            -
            Edité par Me1Yie 20 juin 2019 à 22:30:00

            • Partager sur Facebook
            • Partager sur Twitter
              21 juin 2019 à 0:40:12

              Oui effectivement ! Je pense que quelque part en haut, ils ont du trouver que ça leur profitait plus que leurs pertes potentielles..
              • Partager sur Facebook
              • Partager sur Twitter

              Fonctionnement symboles de débogage

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown