Domanda

Nel mio ambiente di sviluppo, Sto compilando una base di codice utilizzando GNU C ++ 3.4.6. Il codice è in fase di sviluppo, e si blocca, purtroppo, di tanto in tanto. E 'bello essere in grado di eseguire il traceback attraverso un demangler, e io uso c ++ filt 3.4. Il problema nasce quando le funzioni hanno un numero di parametri STL. Considerare

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&
)
{
   // ...
}

Quando la funzione è nel traceback, l'uscita maciullato sulla mia piattaforma è:

(_ZN30My_callbackclER11StatusRKSt3setISsSt4lessISsESaISsEERKSt6vectorIP13My_parameterSaISB_EERK17My_attribute_setRKS9_IP18My_parameter_baseSaISK_EERKS9_ISA_SaISA_EES8_+0x76a) [0x13ffdaa]

c ++ filt gentilmente demangles a

(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]

Questo è lo stesso problema come errori di compilazione si riscontrano nell'utilizzo di modelli. Tuttavia, lo STL è un pacchetto abbastanza regolare e riconoscibile di modelli. Quindi quello che sto sperando che qualcuno là fuori ha creato una versione migliorata del C ++ filt che il dump qualcosa di più vicino alla firma funzione originale. Eventuali suggerimenti?

È stato utile?

Soluzione

STLFilt semplifica e / o riformatta prolisso C ++ di errore e messaggi di avviso, con un focus sulla diagnostica STL-related. Il risultato rende molti dei anche le diagnosi più criptici comprensibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top