2011-01-05 13 views
7

मेरा प्रोग्राम -g ध्वज के साथ संकलित किया गया है। मुझे निम्न समस्या है:gdb: आंतरिक त्रुटि सेटिंग ब्रेकपॉइंट्स

1) मैंने एक शीर्षलेख फ़ाइल में एक फ़ंक्शन में ब्रेकपॉइंट सेट किया है।

ब्रेकपॉइंट काम करता है। अब, जब मैं दो स्तर ऊपर जाता हूं, तो मुझे मुझे सी फ़ाइल (साइज़र.सी: 505) में ले जाना होता है। यह होता है, लेकिन मैं चेतावनी का भार मिल:

warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 
warning: (Internal error: pc 0xff6324 in read in psymtab, but not in symtab.) 
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 
#2 0x0000000000ff6324 in SizePacketImpl<ZValue>::begin_x (this=warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 
0x4888a88, bi=warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 
0x56e6968) at Sizer.C:505 
505   ASSERTo(...some parameters ....); 
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 

2) अगर मैं अब (दो स्तर ऊपर जा रहा है जब कार्यक्रम को तोड़ने राज्य में है के बाद) सीधे Sizer.C में

ब्रेकपाइंट सेट करने का प्रयास
(gdb) break Sizer.C:504 
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 

Breakpoint 3 at 0xff1bc7: file Sizer.C, line 504. 
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 

कार्यक्रम ब्रेकपॉइंट पर बिल्कुल नहीं रुकता है।

3) बस पूर्णता के लिए: अगर मैंने प्रोग्राम चलाने से पहले साइज़र.सी में ब्रेकपॉइंट सेट किया है, तो मुझे चेतावनियां नहीं मिलती हैं, लेकिन कार्यक्रम अभी भी टूट नहीं जाता है।

मैं साइज़र.सी में ब्रेकपॉइंट्स सेट करना चाहता हूं। मैं इस मुद्दे को डीबग और ठीक कैसे कर सकता हूं?

उत्तर

3

यह gdb में एक बग प्रतीत होता है। अधिक जानकारी के लिए इस पृष्ठ को देखें: http://sourceware.org/ml/gdb-patches/2003-01/msg00074.html। आप जिस जीडीबी का उपयोग कर रहे हैं उसका संस्करण क्या है? नवीनतम संस्करण में अपग्रेड करने का प्रयास करें और पुनः प्रयास करें। उन्नयन आपको समस्या को ठीक करना चाहिए। http://sourceware.org/ml/gdb/2006-06/msg00123.html

यहाँ एक समाधान बताया गया है:

[अपडेट]

मैं भी इस लिंक मिल गया। जैसा कि बताया गया है कोड पर टिप्पणी करने का प्रयास करें।

if (low == 0 && (bfd_get_file_flags (obfd) & HAS_RELOC) == 0) > return 0; 
+0

मैं 6.3.0 का उपयोग कर रहा हूं। क्षमा करें, आपके कामकाज को समझ में नहीं आया। मुझे यह कहां रखना चाहिए? –

+0

मुझे लगता है कि अद्यतन हिस्सा इस विशेष मामले के लिए प्रासंगिक नहीं है। यह मैन्युअल रूप से संकलन जीडीबी से संबंधित है। कृपया इसे अनदेखा करें। –

+0

7.1 को अपग्रेड करने से समस्याएं ठीक हुईं। धन्यवाद :) –