なるべくならC++で書かれたプログラムに関わりたくないような気がしているのだが、 当然のようにそういう訳にもいかない。 C++のシンボルをdemangleする方法をメモしておく。
$ nm /usr/lib/libstdc++.so.9 (snip) 0000000000386d90 V _ZGVNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE (snip) $ nm -C /usr/lib/libstdc++.so.9 (snip) 0000000000386d90 V guard variable for std::__cxx11::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::id (snip)文字列として得られた場合には、
c++filt
が使える。
$ c++filt _ZGVNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE guard variable for std::__cxx11::time_get&t;char, std::istreambuf_iterator&t;char, std::char_traits&t;char> > >::idGCCとclangでは同じフォーマットになっているようなので、区分を気にしなくて良いはずである。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。