Question

Dans mon environnement de développement, je suis la compilation d'une base de code en utilisant GNU C ++ 3.4.6. Le code est en cours de développement, et se brise malheureusement maintenant et puis. Il est agréable d'être en mesure d'exécuter le retraçage par un demangler, et je l'utilise c ++ filt 3.4. Le problème vient quand les fonctions ont un certain nombre de paramètres STL. Considérez

My_callback::operator()(
   Status&,
   std::set<std::string> const&,
   std::vector<My_parameter*> const&,
   My_attribute_set const&,
   std::vector<My_parameter_base*> const&,
   std::vector<My_parameter> const&,
   std::set<std::string> const&
)
{
   // ...
}

Lorsque cette fonction est dans le retraçage, la sortie mutilée sur ma plate-forme est:

(_ZN30My_callbackclER11StatusRKSt3setISsSt4lessISsESaISsEERKSt6vectorIP13My_parameterSaISB_EERK17My_attribute_setRKS9_IP18My_parameter_baseSaISK_EERKS9_ISA_SaISA_EES8_+0x76a) [0x13ffdaa]

c ++ filt demangles aimablement à

(My_callback::operator()(Status&, std::set<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::vector<My_parameter*, std::allocator<My_parameter*> > const&, My_attribute_set const&, std::vector<My_parameter_base*, std::allocator<My_parameter_base*> > const&, std::vector<My_parameter, std::allocator<My_parameter> > const&, std::set<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)+0x76a) [0x13ffdaa]

Ceci est le même problème que les erreurs du compilateur rencontrés lors de l'utilisation des modèles. Cependant, la STL est un ensemble assez régulier et reconnaissable des modèles. Donc ce que j'espère que quelqu'un là-bas a créé une version améliorée de c ++ filt qui décharge quelque chose plus proche de la signature de la fonction d'origine. Tous les conseils?

Était-ce utile?

La solution

STLFilt simplifie et / ou reformate de longue haleine C ++ erreur et des messages d'avertissement, avec mettant l'accent sur le diagnostic relatif aux STL. Le résultat rend beaucoup de même les diagnostics les plus énigmatiques compréhensible.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top