Ubuntu 14.04では、きれいな印刷を有効にしたPythonサポートでgdb-7.12を構築し、次のようにgdbinitファイルを設定しました。https://sourceware.org/gdb/wiki/STLSupport。
ただし、コンテナのサイズを印刷するたびに:
p ivec.size()
Cannot evaluate function -- may be inlined
私が使っているMCVEです。
#include <vector>
using namespace std;
int main(){
vector<int> ivec;
return 0;
}
別のコンパイルオプションを試しました
g++-6 -g -O0 -fno-inline-functions -gdwarf-2 Source.cpp --std=c++14
実際、私は上記のすべてのオプションを組み合わせて試しましたが、常に同じ問題が発生しました。
問題が解決したかどうかを確認するために、gdb-7.11(ソースからビルド)に切り替えようとし、g++-4.8に切り替えましたが、どちらも問題を解決できないようです。
私は何が間違っていましたか?オプションを提供する特定の順序がありますか? -O0オプションが有効かどうかを確認する方法はありますか?
答え1
この関数をコンパイルするには、vector :: size()を呼び出す必要があります。これはクラステンプレートなのでコンパイルされません。通話も同じ文脈でなければならないと思いますが、よくわかりません。