2016-09-21 111 views
0

我有一些問題調試我的應用程序 - 當我嘗試調用解析器:: extractString(...)從GDB殼它的命名空間返回GDB不能調用函數

無符號「extractString」 「分析器」。

當我執行

信息功能extractString

我有這樣的輸出

所有匹配的正則表達式 「extractString」 功能:

文件/ home /德米特里/來源/ transce iver/parser/json.cpp: std :: __ cxx11 :: string parser :: extractString [abi:cxx11](rapidjson :: GenericValue, parser :: MultithreadAllocator> const &);

非調試符號:0x0000000000506500 解析器:: extractString [ABI:cxx11](rapidjson :: minilang中, 解析器:: MultithreadAllocator>常量&)@plt 0x00007ffff77e3640 解析器:: extractString [ABI:cxx11](rapidjson ::在minilang中, 解析器:: MultithreadAllocator>常量&)@plt

什麼是調用這個函數的問題?函數extractString在靜態庫中定義並從應用程序中調用時沒有任何問題。

回答

4

GDB不支持海灣合作委員會介紹了C++ 11 ABI標籤5.見這些錯誤:

你最簡單的解決辦法可能是取消通過將宏_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的解決方法,雖然它們看起來有點奇怪。

+0

貌似在我的代碼使用'_GLIBCXX_USE_CXX11_ABI'還需要使用它的所有依賴庫:-( 二變通辦法不工作 - 我的gdb V7.11墜毀調用報價收納功能名稱 –