我的程序拋出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
iee他被告知變量的名字。我的問題是:
有什麼辦法告訴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'得到了行號,有機會得到第二個錯誤信息(即沒有調試器的名字)? – elemakil