Developpez.com

Le Club des Développeurs et IT Pro

GDB, le débogueur standard du projet GNU continue sa mue en C++11, abandonnant C90,

Voici un petit état des lieux

Le 2017-10-13 10:33:43, par Victor Vincent, Expert éminent sénior
L’année passée, le code de GNU Debugger (GDB) avait été converti. L’équipe de développement de GDB avait fait le choix de passer du langage C vers C++11. Cette conversion avait été justifiée à l’époque par le besoin de rendre le code du débogueur plus robuste, plus facilement maintenable, mais aussi par un besoin de casser la barrière que peut constituer le langage C pour les nouveaux développeurs désireux de rejoindre l’équipe de développement de GDB.

À l’heure actuelle, la branche master de GDB requiert par défaut le compilateur C++11. La possibilité de revenir vers un compilateur C ayant été purement et simplement supprimée. Pour l’équipe de GDB, le choix de migrer vers du C++ est une bonne chose étant donné que ce langage est standardisé, bien connu et populaire notamment auprès des nouveaux développeurs. Il permet de produire un code plus propre dans bien des cas et par conséquent du code plus compréhensible et plus facilement modifiable.

L’équipe de développement de GDB ne compte pas s’arrêter en si bon chemin et déclare son souhait de traduire tout le code source du dépôt src/gdb en C++, y compris GDBServer. À l’état actuel de la progression de ce travail de conversion, il est aujourd’hui possible de compiler GDB avec les compilateurs C++ standard des différents systèmes supportés. Il s’agit par exemple de GCC 4.2.1 pour OpenBSD, ce qui signifie que seules les fonctionnalités de C++98/03 pourront être utilisées. Il faut noter aussi qu’il reste possible de compiler GDB avec des architectures logicielles plus anciennes disposant d’une mémoire plus réduite.

Source : GDB Wiki

Et vous ?

Que pensez-vous du passage de GDB à C++ ?

Voir aussi

C++ aujourd’hui est-il comme Fortran ? Aurait-il a atteint ses limites ? Un ingénieur explique pourquoi il ne s'adonne plus beaucoup au C++ moderne
  Discussion forum
2 commentaires
  • koala01
    Expert éminent sénior
    Salut,

    Perso, je trouve que c'est une excellente chose :

    S'il est possible -- pour ceux qui maitrisent C -- de créer du code robuste, il faut à ce point se concentrer sur les détails pour y arriver que même les meilleurs développeurs C peuvent laisser passer un problème.

    C++ (et surtout C++11 et ultérieur) fournit des abstractions qui permettent de gérer ces détails de manière robuste, et donc de se focaliser sur le but premier de l'application tout en améliorant la robustesse du code.

    Enfin, j'ai beau connaître C et être en mesure de coder correctement avec ce langage, je suis très loin d'atteindre le niveau de maitrise dont je fais preuve en C++.

    Notez que, s'il y avait un langage qui offre les même caractéristiques de puissance, qui n'ait pas besoin d'une machine virtuelle quelconque pour fonctionner, mais qui permettrait l'écriture de code plus robuste encore, je signerais des deux mains pour qu'il soit utilisé pour les outils comme le compilateur et le débuggeur.

    Car, finalement, ce sont deux outils absolument primordiaux, auxquels on doit pouvoir se fier à 100% : Il y a déjà largement assez de circonstances dans lesquelles on a affaire à un comportement indéfini ou à un comportement "défini par l'implémentation" que pour vouloir faire en sorte que toutes les autres circonstances soient impeccablement prise en compte.
  • oodini
    Membre émérite
    Envoyé par koala01
    Notez que, s'il y avait un langage qui offre les même caractéristiques de puissance, qui n'ait pas besoin d'une machine virtuelle quelconque pour fonctionner, mais qui permettrait l'écriture de code plus robuste encore, je signerais des deux mains pour qu'il soit utilisé pour les outils comme le compilateur et le débuggeur.
    D ?