Don*_*eld 2 c++ stl name-mangling c++filt demangler
在我的开发环境中,我正在使用GNU C++ 3.4.6编译代码库.代码正在开发中,不幸的是偶尔崩溃.很高兴能够通过demangler运行回溯,我使用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&
)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
当此函数在回溯中时,我平台上的错位输出是:
(_ZN30My_callbackclER11StatusRKSt3setISsSt4lessISsESaISsEERKSt6vectorIP13My_parameterSaISB_EERK17My_attribute_setRKS9_IP18My_parameter_baseSaISK_EERKS9_ISA_SaISA_EES8_+0x76a) [0x13ffdaa]
Run Code Online (Sandbox Code Playgroud)
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]
Run Code Online (Sandbox Code Playgroud)
这与使用模板时遇到的编译器错误相同.但是,STL是一个相当规则且可识别的模板包.所以我希望有人在那里创建了一个增强版的c ++ filt,它可以转移更接近原始函数签名的东西.任何提示?