Вопрос

В моей среде разработки я компилирую базу кода, используя GNU C ++ 3.4.6.Код находится в стадии разработки и, к сожалению, время от времени выходит из строя.Приятно иметь возможность запускать обратную трассировку через деманглер, и я использую c ++ filt 3.4.Проблема возникает, когда функции имеют ряд параметров STL.Рассмотреть

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

Когда эта функция находится в обратной трассировке, искаженный вывод на моей платформе выглядит:

(_ZN30My_callbackclER11StatusRKSt3setISsSt4lessISsESaISsEERKSt6vectorIP13My_parameterSaISB_EERK17My_attribute_setRKS9_IP18My_parameter_baseSaISK_EERKS9_ISA_SaISA_EES8_+0x76a) [0x13ffdaa]

c ++ filt любезно освобождает его от

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

Это та же проблема, что и ошибки компилятора, возникающие при использовании шаблонов.Однако STL - это довольно обычный и узнаваемый пакет шаблонов.Итак, я надеюсь, что кто-то там создал улучшенную версию c ++ filt, которая выдавала бы что-то более близкое к исходной сигнатуре функции.Какие-нибудь намеки?

Это было полезно?

Решение

stlфильтровать упрощает и / или переформатирует многословные сообщения об ошибках и предупреждениях C ++ с акцентом на диагностику, связанную с STL.В результате многие даже самые запутанные методы диагностики становятся понятными.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top