質問

私の開発環境では、私は、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の拡張バージョンが作成されたうちの誰かです。任意のヒント?

役に立ちましたか?

解決

STLFilt の簡素化および/または再フォーマット長ったらしいC ++エラーおよび警告メッセージとSTL関連の診断に焦点を当てます。結果は分かりも、最も不可解な診断の多くをレンダリングします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top