私はマルチスレッドアプリケーションで作業しており、GDBを使用してそれをデバッグしたいと考えています。 問題は、私のスレッドの1つが次のメッセージで消え続けることです。 pure virtual method called terminate called without an active exception Abort 私はそのメッセージの原因を知っていますが、私のスレッドのどこで発生するのかわかりません。バックトレースは本当に役に立ちます。 GDBでアプリを実行すると、スレッドが一時停止または再開されるたびに一時停止します。例外のあるスレッドの1つが停止するまでアプリを通常どおり実行し続けます。その時点ですべてが停止し、バックトレースを取得できます。
次のようなものがあるとします。 #include <map> int main(){ std::map<int,int> m; m[1] = 2; m[2] = 4; return 0; } gdbからプログラムを実行しているマップの内容を検査できるようにしたいと思います。 添え字演算子を使用すると、次のようになります。 (gdb) p m[1] Attempt to take address of value not located in memory. findメソッドを使用しても、より良い結果は得られません。 (gdb) p m.find(1) Cannot evaluate function -- may be inlined これを達成する方法はありますか?