Ein Programm von mir wirft eine std::out_of_range
. Ich kenne den Grund dafür, ich greife irgendwo auf einen Vektor mit dem Index -1
zu. Was ich nicht weiß, ist der Name des Vektors (Variablenname) und die Position im Code. Die Fehlermeldung, die mein Programm produziert, sieht folgendermaßen aus:
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
zsh: abort (core dumped) ./main.x config.cfg
während die Fehlermeldung, die vom Code eines anderen Benutzers (der auch g++
verwendet) produziert und in der Frage C++ accessing vector veröffentlicht wurde, folgendermaßen aussieht:
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
Er wird also über den Namen der Variablen informiert. Meine Frage ist:
Gibt es eine Möglichkeit, g++
/gcc
zu sagen, mir die erweiterten Informationen zu geben? Vielleicht sogar einschließlich der Zeilennummern (keine Ahnung, ob das möglich ist, aber hey, ein Mann kann träumen ;) ).
Nur zum Spaß habe ich mein Programm in gdb
mit der Option catch thrown
gestartet (ich muss hinzufügen, dass ich nahezu keine Erfahrung im Umgang mit einem echten Debugger habe), was mir auch nichts Neues gesagt hat, tatsächlich hat es mir nicht gesagt, dass der Fehler aufgrund einer std::out_of_range
-Ausnahme aufgetreten ist.
Übrigens, meine Compiler-Flags (für Debugging) sind:
CFLAGS = --exceptions -I$(ROOTSYS)/include --std=c++11 -Wall -g -O0 -fno-inline -fno-eliminate-unused-debug-types