gdb无法调用函数

时间:2016-09-21 14:56:48

标签: c++ gdb

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

  

没有符号" extractString"在命名空间"解析器"。

执行时

  

info functions extractString

我有这个输出

  

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

     

文件/home/dmitriy/Sources/transceiver/parser/json.cpp:   的std :: __ cxx11 ::字符串   解析器:: extractString [ABI:cxx11](rapidjson :: minilang中,   解析器:: MultithreadAllocator>常量&安培);

     

非调试符号:0x0000000000506500   解析器:: extractString [ABI:cxx11](rapidjson :: minilang中,   解析器:: MultithreadAllocator> const&)@ plt 0x00007ffff77e3640   解析器:: extractString [ABI:cxx11](rapidjson :: minilang中,   解析器:: MultithreadAllocator>常量&安培)@ PLT

调用此函数有什么问题?函数extractString在静态库中定义并从应用程序调用而没有任何问题。

1 个答案:

答案 0 :(得分:5)

gdb尚不支持gcc 5中引入的C ++ 11 ABI标记。请参阅以下错误:

最简单的解决方法可能是通过将宏_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中的变通方法,虽然它们看起来有点奇怪。