Pergunta

No meu ambiente de desenvolvimento, estou compilando uma base de código usando o GNU C ++ 3.4.6. O código está em desenvolvimento e, infelizmente, trava de vez em quando. É bom poder percorrer o Traceback através de um desmangler, e eu uso o C ++ Filt 3.4. O problema ocorre quando as funções têm vários parâmetros STL. Considerar

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 essa função está no Traceback, a saída mutilada na minha plataforma é:

(_ZN30My_callbackclER11StatusRKSt3setISsSt4lessISsESaISsEERKSt6vectorIP13My_parameterSaISB_EERK17My_attribute_setRKS9_IP18My_parameter_baseSaISK_EERKS9_ISA_SaISA_EES8_+0x76a) [0x13ffdaa]

c ++ film gentilmente o desanima para

(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 é o mesmo problema que os erros do compilador encontrados ao usar modelos. No entanto, o STL é um pacote de modelos bastante regular e reconhecível. Então, o que espero é que alguém por aí tenha criado uma versão aprimorada do Filt C ++, que despejaria algo mais próximo da assinatura da função original. Alguma dica?

Foi útil?

Solução

Stlfilt Simplifica e/ou reforma erros de C ++ e mensagens de aviso de longa data, com foco nos diagnósticos relacionados à STL. O resultado torna muitos dos diagnósticos mais enigmáticos compreensíveis.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top