2012-05-17 21 views
5

मुझे अजीब सीईजी गलती मिल रही है जो मेरे कार्यक्रम में कहीं से नहीं आ रही है ... वैसे भी स्पष्ट रूप से नहीं। मैं दो सरणी पर "strcmp" को बुला रहा हूं ... दोनों सरणी उसी प्रकार के structs में संग्रहीत हैं। मैं डॉट नोटेशन के साथ एक और एक पर हो रही है साथ अपसंदर्भन के माध्यम से "->":सेगमेंटेशन फॉल्ट: "... ऐसी कोई फ़ाइल या निर्देशिका नहीं है"

int name = strcmp(one.name, two->name); 

यह ठीक संकलित लेकिन जब मैं इसे चलाने मैं SEG गलती मिलता है। मैंने इसे जीडीबी के साथ ट्रैक करने की कोशिश की है, लेकिन जब मैंने ऐसा लगता है कि यह होने से पहले ब्रेकपॉइंट्स लगाएगा, तो यह वैसे भी दोषों को रोक देगा। मैं हो रही है:

Program received signal SIGSEGV, Segmentation fault. 
__strcmp_ia32() at ../sysdeps/i386/i686/multiarch/../strcmp.S:40 
40 ../sysdeps/i386/i686/multiarch/../strcmp.S: No such file or directory. 
    in ../sysdeps/i386/i686/multiarch/../strcmp.S 

एफएमएल। सुझाव? धन्यवाद!

+1

क्या आपने gdb में segfaults होने पर बैकट्रैक का प्रयास किया था? –

+2

कॉल के बिंदु पर 'one.name',' two', और 'two-> name' का मान क्या है? – Mud

+3

आपको सेगमेंटेशन गलती का सामना करना पड़ा है और 'strcmp' के लिए स्रोत आपके पर्यावरण में मौजूद नहीं है, जब सिस्टम इसके लिए लुकअप करने की कोशिश करता है * * सीजी गलती हुई। प्रस्तुत करने के लिए स्रोत की आवश्यकता नहीं है, यह एक मानक लाइब्रेरी फ़ंक्शन है। इसलिए समस्या यह है कि आप स्मृति की सीमाओं को किसी अन्य स्थान पर ओवरराइट कर रहे हैं। अपने प्रोग्राम को वालग्रिंड या मेमोरी विश्लेषण टूल के साथ चलाना चाहिए, जहां सटीक विवरण देना चाहिए। –

उत्तर

2

मेरा सुझाव: इसे संकलित करें और इसे valgrind के माध्यम से चलाएं।

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