제 개발 환경에서 GNU C++ 3.4.6을 사용하여 코드 기반을 컴파일 중입니다. 코드가 개발 중이며 불행히도 지금은 충돌이 발생합니다. 데 랭글러 (demangler)를 통해 역 추적을 수행하는 것이 좋으며, 나는 C++ filt 3.4를 사용합니다. 문제는 함수에 여러 STL 매개 변수가있는 경우에 발생합니다. 이 기능은 역 추적에있을 때STL 인식 C++ filt
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]
에 demangles 템플릿을 사용할 때 컴파일러 오류가 발생했습니다. 그러나 STL은 상당히 규칙적이고 인식 할 수있는 템플릿 패키지입니다. 그래서 내가 바라는 바는 누군가가 원래의 함수 시그니처에 가까운 것을 버리는 C++ filt의 향상된 버전을 만들었다는 것입니다. 어떤 힌트?
질문과 관련이 없지만 매우 끔찍한 기능입니다! 7 가지 매개 변수, 모든 복잡한 유형 - 조금 리팩터링이 지연된 것보다 많습니다. –
Neil, 나는 당신에게 동의하지만, 나는 그 코드의 소유자가 아닙니다. 그냥 내 추적 기록에 나타납니다 (이름은 유죄를 보호하기 위해 변경되었습니다)^( –