我的一个程序抛出一个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
而由其他人(他g++
也使用)的代码产生并发布在问题C++ 访问向量中的错误消息如下所示:
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