代码之家  ›  专栏  ›  技术社区  ›  Don Wakefield

寻找STL感知的C++文件

  •  2
  • Don Wakefield  · 技术社区  · 15 年前

    在我的开发环境中,我使用GNU C++ 3.4.6编译一个代码库。代码正在开发中,不幸的是有时会崩溃。能够通过一个DeangRunter运行回溯是很好的,而且我使用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++ FLT善意地将其降级为

    (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,它将把一些东西转储到原来的函数签名上。有什么提示吗?

    1 回复  |  直到 14 年前
        1
  •  7
  •   Nikola Smiljanić    15 年前

    STLFilt 简化和/或重新格式化冗长的C++错误和警告消息,重点是STL相关的诊断。这一结果使得许多甚至是最神秘的诊断都可以理解。

    推荐文章