Developpez.com

Le Club des Développeurs et IT Pro

GNU présente son Debugger 7.0

Qui apporte le reverse-debugging

Le 2009-10-17 07:35:40, par Katleen Erna, Expert éminent sénior
GNU présente son Debugger 7.0, qui apporte le reverse-debugging

GNU Debugger vient de sortir dans sa nouvelle version 7.0 qui apporte son lot d'améliorations et de nouvelles fonctionnnalités. Parmis les nouvelles mesures les plus importantes, on notera la prise en charge de multiples plateformes (dont x86/x86_64 Darwin) ainsi que la possibilité pour les développeurs de scripter le debugger avec Python. Il sera de plus désormais possible d'utiliser un mode reverse-debugging pour revenir en arrière durant le processus de test d'une application.

Le reverse-debugging n'en est par ailleurs qu'à ses débuts. Cette technologie fait tout juste son apparition dans la version 7.0, et n'est actuellement prise en charge que par trois plateformes : i386 Linux, AMD64 Linux et moxie-elf. L'équipe du debugger GNU recherche activement de l'aide pour pouvoir étendre ce support aux plateformes Mac OS X et Windows, et améliorer ses performances et sa prise en charge d'i386.

Quelques soucis d'exécution ont d'ailleurs déjà été repéré lors de l'utilisation de Sys_brk, mais devraient être corrigés.

L'arrivée de cette nouvelle fonctionnalité ouvre de grandes possibilités pour les utilisateurs de GNU. EIle apporte de nouvelles commandes permettant par exemple de revenir à un point précédent, ou d'exécuter une application entièrement à l'envers pour repèrer la source de certains problèmes.

GNU Debugger 7.0 apporte également quelques solutions et mises à jour. Cette version est la première de la série à inclure une configuration x86 native pour la plate-forme Darwin et à prendre en charge des fonctions inline.

Une nouvelle interface est également présente pour les compilations "just in time". Elle permet aux développeurs de débugger plus facilement des applications compilées en JIT. Les tracepoints peuvent désormais être optionnels, et le passage à l'Ada task est supporté.

Le GNU Debugger 7.0 est disponible sous la Licence Publique de GNU.

Source : Historique du projet et téléchargement sur le site officiel de GNU
  Discussion forum
10 commentaires
  • JulienDuSud
    Membre confirmé
    Ouch ! Le reverse-debugging, en voilà une fonctionnalité à laquelle je m'attendais pas. Mais combien de fois n'ai-je pas voulu pouvoir retourner en arrière ?

    Vraiment un très gros pas dans le debugging, à mon avis.

    Reste à voir s'il n'y a pas d'effets de bords lors de son utilisation.
  • souviron34
    Expert éminent sénior
    Envoyé par xtope
    C'est la première fois que j'entends parler de reverse debugging. Je me demande, comment le debuggeur peut savoir à partir d'où on est arrivés à telle ou telle instruction ? A moins qu'il ne le demande explicitiment ?
    bah je suppose que simplement cela a à voir avec stocker les bons paramètres..

    Le principe est simple : puisque tu peux faire du debug pas à pas, pour remonter il faut stocker les états ou les changements d'états (comme du MPEG pour les images)..
  • SpiceGuid
    Membre émérite
    Envoyé par JulienDuSud
    Ouch ! Le reverse-debugging, en voilà une fonctionnalité à laquelle je m'attendais pas. Mais combien de fois n'ai-je pas voulu pouvoir retourner en arrière ?
    En même temps il ne faudrait pas croire que c'est une innovation récente.
    OCamlDebug le fait (replay-debug ou backward-execution) depuis des années, et SML depuis bientôt 20 ans.
  • joseph_p
    Membre expérimenté
    Hum, quels sont les languages concernés par ce JIT ? Pas C/C++ si ? Si oui, alors j'ai raté de sacrés épisodes
  • xtope
    Membre du Club
    C'est la première fois que j'entends parler de reverse debugging. Je me demande, comment le debuggeur peut savoir à partir d'où on est arrivés à telle ou telle instruction ? A moins qu'il ne le demande explicitiment ?
  • sidev
    Membre du Club
    c'est cool ça.
    Donc si par exple je libère une ressource a un moment donné, avec le reverse-debugging cette ressource va se reconstruire quand je vais repasser sur cette ligne?? cmt est ce possible?
  • souviron34
    Expert éminent sénior
    Envoyé par sidev
    c'est cool ça.
    Donc si par exple je libère une ressource a un moment donné, avec le reverse-debugging cette ressource va se reconstruire quand je vais repasser sur cette ligne?? cmt est ce possible?
    déjà dit

    Si tu stockes que A était un tableau de 10 valeurs qui contenait 10 nombres, et que tu stockes qu'au moment X tu libères cela, si tu revient au moment X tu as bien l'information..

    Cela suppose seulement une (très grosse) capacité mémoire ainsi qu'une sauvegarde permanente de ce qui se passe (un "dump" dynamique).

    Donc bien entendu cela prend du temps et de la place, mais le principe est simple..
  • souviron34
    Expert éminent sénior
    d'ailleurs il me semble même que ddd le fait partiellement également..
  • kurapix
    Membre régulier
    Enfin une possibilitée de scripting avec un vrai langage!!!
    Ca changera des fichiers de commandes . . .

    Ow, le reverse debugging (ou plus connu sous le nom de backtracing) . . . , ça ça va faire mal , couplé à un langage comme Python, on pourra pour sûr faire des tools puissants .
    Je me demande s'ils ont prévus d'autres langages, parce qu'avoir accès aux fonctionnalitées de GDB de manière programmable, . . . c'est sûr que c'est allécheant .
    Anyway, le jour où GDB sera plus puissant que IDA Pro . . . .
    Et sinon pour l'algorithme de disassembly utilisée par GDB, c'est linear disassembly ou recursive disassembly?

    En tout cas, faudra que je teste ça , surtout que sous Ubuntu Karmic Koala (9.10) gdb a été update de la 6.8 à la 7.0 depuis 1 ou 2 semaines .

    kurapix
  • kkt8
    Membre habitué
    Bonjour,

    A priori pas de reverse debugging sous windows ?
    Est-ce toujours le cas ?

    a+