私はpythonをサポートしてgdb-7.12を構築していますが、きれいな印刷が可能で、https://sourceware.org/gdb/wiki/STLSupportに従ってgdbinitファイルを設定しました。gdbのstl関数は最適化を無効にした後でもインラインで表示されます
しかし、私は、任意のコンテナのサイズに印刷するたびに:
p ivec.size()
Cannot evaluate function -- may be inlined
をここでMCVEは私が別のコンパイルオプションに実際に
g++-6 -g -O0 -fno-inline-functions -gdwarf-2 Source.cpp --std=c++14
を試してみました
#include <vector>
using namespace std;
int main(){
vector<int> ivec;
return 0;
}
を使用していますです私は上記のオプションのすべての組み合わせを試して、常に同じ問題。
問題を修正してg ++ - 4.8に切り替えたかどうかを確認するために、gdb-7.11(ソースからビルドされています)に切り替えようとしましたが、いずれも問題を解決していないようです。
私は間違っていますか?オプションを指定しなければならない特定の順序はありますか?
EDIT: 多くの人が問題を解決するために、いくつかのマクロを示唆しているが、私の問題は何とかこれらの機能を印刷することはありませんが、私はそのために私自身かなりprintメソッドを書くことができます。
私の質問は、なぜ-O0オプションを使用して最適化を無効にした後でも、インラインで表示される機能ですか?
http://stackoverflow.com/questions/22163730/cannot-evaluate-function-may-be-inlinedの重複はありますか? – UKMonkey
またはこちらhttp://stackoverflow.com/questions/427589/inspecting-standard-container-stdmap-contents-with-gdb – UKMonkey
@UKMonkey私はそれがそうは思わない、私はこれらの質問を見て、私は最適化を試してみましたオプションと私はベクトルのサイズを印刷するにはかなり印刷する必要はありません –