最適化を無効にした後も、gdb stl関数はまだインラインで表示されます。

最適化を無効にした後も、gdb stl関数はまだインラインで表示されます。

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()を呼び出す必要があります。これはクラステンプレートなのでコンパイルされません。通話も同じ文脈でなければならないと思いますが、よくわかりません。

関連情報