Pregunta

En mi entorno de desarrollo, Estoy compilando una base de código usando GNU C ++ 3.4.6. Código está en desarrollo, y por desgracia se bloquea de vez en cuando. Es agradable ser capaz de ejecutar el rastreo a través de un demangler, y lo uso c ++ filt 3.4. El problema viene cuando las funciones tienen una serie de parámetros STL. Considere

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

Cuando esta función está en el rastreo, la salida destrozado en mi plataforma es:

(_ZN30My_callbackclER11StatusRKSt3setISsSt4lessISsESaISsEERKSt6vectorIP13My_parameterSaISB_EERK17My_attribute_setRKS9_IP18My_parameter_baseSaISK_EERKS9_ISA_SaISA_EES8_+0x76a) [0x13ffdaa]

c ++ filt amablemente demangling 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]

Este es el mismo problema que los errores de compilación se encuentran al uso de plantillas. Sin embargo, el TEL es un paquete bastante regular y reconocible de plantillas. Así que lo que espero es que alguien por ahí ha creado una versión mejorada de c ++ filt que volcar algo más cercano a la firma función original. ¿Alguna pista?

¿Fue útil?

Solución

STLFilt simplifica y / o vuelve a formatear de largo aliento C ++ error y mensajes de advertencia, con un enfoque en el diagnóstico de STL. El resultado hace que incluso muchos de los diagnósticos más crípticos comprensible.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top