gdb无法调用函数

Dmi*_*rov 1 c++ gdb

我在调试应用程序时遇到一些问题-当我尝试从gdb shell调用parser :: extractString(...)时,它会返回

命名空间“解析器”中没有符号“ extractString”。

当我执行

信息函数extractString

我有这个输出

与正则表达式“ extractString”匹配的所有函数:

文件/home/dmitriy/Sources/transceiver/parser/json.cpp:std :: __ cxx11 :: string parser :: extractString [abi:cxx11](rapidjson :: GenericValue,parser :: MultithreadAllocator> const&);

非调试符号:0x0000000000506500解析器:: extractString [abi:cxx11](rapidjson :: GenericValue,解析器:: MultithreadAllocator> const&)@ plt 0x00007ffff77e3640解析器:: extractString [abi:cxx11](rapidjson :: GenericValue,解析器:: MultithreadAllocator > const&)@ plt

调用此函数有什么问题?函数extractString在静态库中定义,并且可以从应用程序中毫无问题地调用。

ks1*_*322 5

gdb尚不支持gcc 5中引入的C ++ 11 ABI标签。请参见以下bug:

最简单的解决方法可能是通过将宏定义_GLIBCXX_USE_CXX11_ABI为0 来禁用新的gcc ABI ,请参阅https://gcc.gnu.org/gcc-5/changes.html#libstdcxx

或者,您也可以尝试从https://sourceware.org/bugzilla/show_bug.cgi?id=18601#c1应用变通方法,尽管它们看起来有些怪异。