मेरा एक प्रोग्राम 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
आईई उसे चर के नाम से कहा जाता है। मेरा सवाल है:
क्या मुझे विस्तारित जानकारी देने के लिए g++
/gcc
बताने का कोई तरीका है? हो सकता है कि लाइन नंबर भी शामिल हों (पता नहीं कि यह संभव है लेकिन हे, एक लड़का सपना देख सकता है;))।
बस funsies के लिए मैंने विकल्प के साथ gdb
में अपना प्रोग्राम चलाया (मैं जोड़ सकता हूं, मेरे पास एक वास्तविक डीबगर का उपयोग करने में शून्य अनुभव है) जिसने मुझे कुछ भी नया नहीं बताया, वास्तव में, यह मुझे नहीं बताया कि त्रुटि std::out_of_range
अपवाद के कारण थी।
Btw, मेरे संकलक झंडे (डिबग के लिए) इस प्रकार हैं:
CFLAGS = --exceptions -I$(ROOTSYS)/include --std=c++11 -Wall -g -O0 -fno-inline -fno-eliminate-unused-debug-types
'पकड़ फेंक' के साथ 'gdb' चलाने के बाद, जब अपवाद पकड़ा जाता है, तो 'कहां' टाइप करें। –
@ डेविडस्वार्टज़ बिल्कुल सही! तो अब मुझे 'gdb' से लाइन नंबर मिल गया है, दूसरा त्रुटि संदेश प्राप्त करने का कोई मौका (यानी डीबगर के बिना नाम)? – elemakil