私のプログラムはstd::out_of_range
を投げます。私はそれの理由を知っている、私はインデックス-1
どこかでベクトルにアクセスしています。私が知らないのは、コード内のベクトル(変数名)と場所の名前です。私のプログラムによって生成されるエラーメッセージは次のようになります。いくつかの他の男のコードによって生成されるエラーメッセージに対しstd :: out_of_rangeをスローするオブジェクトを見つける
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
zsh: abort (core dumped) ./main.x config.cfg
(彼はあまりにもg++
使用しています)と、質問C++ accessing vectorに掲載さは次のようになります。
Error for vec.at(i).setVec(tmp);
Error is: terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
e彼は変数の名前を伝えられます。私の質問は:
g++
/gcc
私に詳細情報を伝える方法はありますか?たぶん、行番号を含めることもできます(それは可能かどうかわかりませんが、ちょっと男が夢見ることができます;))。
funsiesちょうど私はgdb
のcatch thrown
オプションで私のプログラムを走らせました(実際には、実際のデバッガの使用経験はほとんどありません)。そのエラーはstd::out_of_range
例外のためです。
はところで、(デバッグ用)私のコンパイラフラグは以下のとおりです。
CFLAGS = --exceptions -I$(ROOTSYS)/include --std=c++11 -Wall -g -O0 -fno-inline -fno-eliminate-unused-debug-types
'catch throw 'で' gdb'を実行した後で、例外が捕捉されたら、 'where'と打ちます。 –
@DavidSchwartzパーフェクト!だから、私は 'gdb'から2番目のエラーメッセージ(デバッガなしの名前)を取得する行番号を取得しましたか? – elemakil