15 votes

Y a-t-il des projets pour C++14 ou plus tard pour une trace de pile standardisée et autres utilitaires de débogage ?

Y a-t-il des plans pour ajouter une trace de pile standardisée et d'autres utilitaires de débogage à C++14 (ou ultérieur), ou cette fonctionnalité continuera-t-elle à être ajoutée par le système d'exploitation ou le compilateur?

12voto

Dan Points 743

Non. Il n'y a pas de plans.

Pour commencer, la norme ne spécifie pas comment les appels de fonction doivent être effectués. En réalité, cela dépend du matériel. Vous ne le savez probablement pas, mais il existe du matériel qui ne place pas les adresses de retour sur une pile. Certains d'entre eux utilisent des instructions de saut dynamique, et d'autres utilisent des files de retour pour suivre les adresses de retour.

La trace de la pile à laquelle vous faites référence est possible sur un, bien que large, sous-ensemble de processeurs, mais puisque C et C++ étaient conçus pour fonctionner sur autant de processeurs que possible, ils ne définiront pas, ne peuvent pas définir, une manière standard de réaliser une trace arrière qui dictent comment le matériel doit être fabriqué.

3voto

Florian Richoux Points 800

Comme l'a dit Dan, pas de backtrace et pas de plan pour le faire, à ma connaissance. En ce qui concerne les utilitaires de débogage, mis à part les assertions, je connais seulement les macros standard héritées de C, comme

  • __FILE__ pour connaître le nom du fichier d'entrée actuel,
  • __LINE__ pour connaître le numéro de ligne d'entrée actuel,
  • __func__ pour connaître la fonction actuelle.

Par exemple

    1. #include 
    2. 
    3. int main() {
    4.   std::cout << "Fichier " << __FILE__ << ", ligne " << __LINE__ << std::endl;
    5. }

affichera

    Fichier /chemin/votre_bin, ligne 4

Plus de détails ici: http://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html

1voto

Sebastian Redl Points 18816

Vous pouvez obtenir un assez bon aperçu de ce qui va entrer dans la norme suivante en consultant les documents publiés par le comité de normalisation:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/

Vous y trouverez des propositions rédigées par diverses personnes, des comptes rendus de réunions, des projets de normes et des listes de problèmes.

Étant donné le statut de C++14, le projet de norme est le document le plus informatif pour votre question particulière. En résumé : il n'y a rien de nouveau pour le débogage dedans.

Il y avait un document sur les traces de piles en 2012:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3441.html

Cependant, il ne semble pas avoir laissé de traces dans la norme actuelle. Si vous voulez en savoir plus, vous pouvez essayer de lire les comptes rendus des réunions de l'époque ou contacter l'auteur du document - tout n'est pas enregistré dans les réunions, seulement les sessions où tout le monde se réunit et vote, mais pas le travail des groupes individuels.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X