私のプログラムはstd::out_of_range
. その理由はわかっています-1
。どこかでインデックスを持つベクトルにアクセスしています。私が知らないのは、ベクトルの名前 (変数名) とコード内の場所です。私のプログラムによって生成されたエラーメッセージは次のようになります:
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
zsh: abort (core dumped) ./main.x config.cfg
一方、他の人のコード (彼も使用) によって生成され、C++ アクセス ベクトルg++
の質問に投稿されたエラー メッセージは次のようになります。
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
つまり、変数の名前が通知されます。私の質問は:
拡張情報を伝えるg++
/提供する方法はありますか? gcc
たぶん、行番号を含めることもできます(それが可能かどうかはわかりませんが、男は夢を見ることができます;))。
ファンシーのために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