2013-10-02 7 views
9

मैं Ubuntu 12.04 पर जीसीसी 4.8.1 स्थापित काम नहीं करता है अब gdb निम्न संदेश दिखाता है (मुझे लगता है कि ऐसा करने के लिए पीपीए जोड़ने के लिए किया था):सी ++ ऐप। जीसीसी 4.8.1 स्थापित करने के बाद gdb

गतिशील लिंकर ब्रेकप्वाइंट समारोह को ढूंढने में असमर्थ । जीडीबी साझा लाइब्रेरी प्रारंभकर्ता डीबग करने में असमर्थ होगा और स्पष्ट रूप से लोड किए गए गतिशील कोड को ट्रैक करेगा। 5 लाइब्रेरीज़ के लिए साझा लाइब्रेरी प्रतीकों को लोड नहीं किया जा सकता है, उदा। /usr/lib/x86_64-linux-gnu/libstdc++.so.6। पूरी लिस्टिंग देखने के लिए "info sharedlibrary" आदेश का उपयोग करें। क्या आपको "सोलिब-सर्च-पथ सेट करें" या "सेट सिसरूट" की आवश्यकता है?

मैं गूगल किया था और मैं इस लेख के लिए सबसे अच्छा मेरे सवाल का जवाब मिला: http://www.fayewilliams.com/2013/01/31/gdb-unable-to-find-dynamic-linker-breakpoint-function/

हालांकि मैं अभी भी वास्तव में क्या करने के लिए समझ में नहीं आता। क्या कोई मदद कर सकता है। धन्यवाद!

+1

वैकल्पिक रूप से आप जीडीबी 7.4 के साथ संगत डीबग प्रतीकों को उत्पन्न करने के लिए कंपाइलर को '-gdwarf-2' पास कर सकते हैं। – legends2k

उत्तर

13

मुझे भी यही समस्या थी और इसे हल करने में सक्षम था।

मैंने इस पीपीए (https://launchpad.net/~ubuntu-toolchain-r/+archive/test) से जीसीसी (4.8.1) का अंतिम "स्थिर" संस्करण स्थापित किया, और जब तक मुझे डिबगिंग समस्या से निपटना पड़े, तब तक सबकुछ सही था। आप देख सकते हैं कि इस पीपीए में टूलचेन संकलक अपग्रेड से निपटने के लिए जीडीबी का एक अद्यतन संस्करण प्रदान नहीं करता है। वास्तव में, मुझे कोई भी पीपीए नहीं मिला जो जीडीबी का एक नया संस्करण प्रदान करता है।

मेरे मामले में मैंने इस स्थिति को अपनी वेबसाइट (http://www.sourceware.org/gdb/) से जीडीबी (7.6) के नवीनतम स्थिर संस्करण को डाउनलोड और स्थापित किया। जीडीबी का यह संस्करण प्रतीकों को हल करने में सक्षम है और मुझे जीसीसी 4.8.1 के साथ उत्पन्न द्विआधारी की सभी आवश्यक जानकारी देता है, भले ही मैं नया सी ++ 11 मानक (कोड -स्ट = सी ++ के साथ संकलित कोड का उपयोग कर रहा हूं) 11 ध्वज)।

ध्यान रखें कि जीडीबी के इस नए संस्करण को मैन्युअल रूप से स्थापित करना, डिफ़ॉल्ट रूप से /usr/local/bin/gdb में द्विआधारी स्थापित करेगा।

+0

मैं देखता हूं, धन्यवाद! – vincegata

+0

क्या आप जानते हैं कि इसे नियमित/usr/bin में कैसे इंस्टॉल करें? – vincegata

+0

/usr में स्थापित करने के लिए और नहीं/usr/local: ./configure --prefix =/usr – vincegata

2

जीडीबी आमतौर पर टूलचेन के साथ भेज दिया जाता है।

आप शायद पिछले टूलचेन के साथ भेजे गए जीडीबी का उपयोग कर रहे हैं।

which gdb 

यह पता लगाने के लिए कि आप किस जीडीबी का उपयोग कर रहे हैं।

नए कंपाइलर के साथ संकलित एक प्रोग्राम को डीबग करने के लिए, आपको नए जीडीबी का उपयोग करना होगा, जहां भी यह है।

संबंधित मुद्दे