调试我的应用程序时遇到一些问题 - 当我尝试从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在静态库中定义并从应用程序调用而没有任何问题。
答案 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中的变通方法,虽然它们看起来有点奇怪。