我在调试应用程序时遇到一些问题-当我尝试从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在静态库中定义,并且可以从应用程序中毫无问题地调用。
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应用变通方法,尽管它们看起来有些怪异。
| 归档时间: |
|
| 查看次数: |
734 次 |
| 最近记录: |