demangle符号名
在调试C++程序时, 经常会遇到未demangle的C++符号名, 不了解mangle的规则时, 并不太容易确定具体是哪个API. 比如, 使用objdump将boost日志动态库的符号表导出, 你是否能够很快辨别出对应的实际的函数名称.
[jinguang1@centos7-dev ~]$ objdump -T /usr/lib/libboost_log.so
/usr/lib/libboost_log.so: file format elf64-x86-64
DYNAMIC SYMBOL TABLE:
0000000000000000 DF *UND* 0000000000000000 GLIBCXX_3.4 _ZNSs6appendEPKcm
0000000000000000 DO *UND* 0000000000000000 GLIBCXX_3.4 _ZTVSt16invalid_argument
0000000000000000 DF *UND* 0000000000000000 GLIBCXX_3.4 _ZNSt8bad_castD2Ev
0000000000000000 DF *UND* 0000000000000000 GLIBCXX_3.4 _ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale
0000000000000000 DF *UND* 0000000000000000 GLIBCXX_3.4 _ZSt20__throw_length_errorPKc
0000000000000000 DF *UND* 0000000000000000 GLIBCXX_3.4 _ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale
0000000000000000 DF *UND* 0000000000000000 GLIBCXX_3.4 _ZNSt15basic_streambu
在C++编程中,demangling是将编译器为C++符号生成的mangled名称转换回可读形式的过程。本文介绍了如何使用`c++filt`工具来解析这些mangled符号,帮助开发者在调试时更方便地识别API。通过这个工具,你可以将复杂的mangled符号转换成易于理解的函数名称。
最低0.47元/天 解锁文章
696

被折叠的 条评论
为什么被折叠?



