2012-09-12 13 views
9
valgrind --leak-check=full ./CH02_HelloTriangle 
==11404== Memcheck, a memory error detector 
==11404== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al. 
==11404== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info 
==11404== Command: ./CH02_HelloTriangle 
==11404== 
==11404== Jump to the invalid address stated on the next line 
==11404== at 0x0: ??? 
==11404== by 0x6F9271A: ??? (in /usr/lib/fglrx/dri/fglrx_dri.so) 
==11404== Address 0x0 is not stack'd, malloc'd or (recently) free'd 
==11404== 
==11404== 
==11404== Process terminating with default action of signal 11 (SIGSEGV) 
==11404== Bad permissions for mapped region at address 0x0 
==11404== at 0x0: ??? 
==11404== by 0x6F9271A: ??? (in /usr/lib/fglrx/dri/fglrx_dri.so) 
==11404== 
==11404== HEAP SUMMARY: 
==11404==  in use at exit: 144,423 bytes in 407 blocks 
==11404== total heap usage: 1,009 allocs, 602 frees, 189,993 bytes allocated 
==11404== 
==11404== LEAK SUMMARY: 
==11404== definitely lost: 0 bytes in 0 blocks 
==11404== indirectly lost: 0 bytes in 0 blocks 
==11404==  possibly lost: 0 bytes in 0 blocks 
==11404== still reachable: 144,423 bytes in 407 blocks 
==11404==   suppressed: 0 bytes in 0 blocks 
==11404== Reachable blocks (those to which a pointer was found) are not shown. 
==11404== To see them, rerun with: --leak-check=full --show-reachable=yes 
==11404== 
==11404== For counts of detected and suppressed errors, rerun with: -v 
==11404== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 2 from 2) 
Segmentation fault (core dumped) 

वास्तव में समस्या क्या है?"अमान्य पते पर जाएं" द्वारा valgrind का अर्थ क्या है?

यदि मैं इस एप्लिकेशन को चलाता हूं तो यह केवल सेगमेंटेशन गलती त्रुटि से बाहर निकलता है, यह ओपनजीएल ईएस 2.0 एप्लिकेशन डेस्कटॉप के लिए एएमडी जीएलएस एसडीके के साथ संकलित है। इस एप्लिकेशन के लिए

This the source

+0

क्या आपने इसे एक सामान्य डीबगर के तहत चलाने की कोशिश की है? यह एक स्मृति रिसाव की तरह नहीं दिखता है, बल्कि किसी प्रकार का शून्य सूचक अपवाद है, और मुझे यकीन नहीं है कि Valgrind एनपीई डीबग करने के लिए उपयुक्त उपकरण है या नहीं। – Tim

+0

@Tim मेरे पास इस ओपनजीएल ईएस लाइब्रेरी का डिबग संस्करण नहीं है और मुझे अन्य टूल्स के बारे में पता नहीं है जो इसके लिए अच्छे हैं कि मैं डीबग लाइब्रेरी के बिना उपयोग कर सकता हूं। – Ken

+0

मुझे नहीं लगता कि आपको OGLES लाइब्रेरी को डीबग करने की आवश्यकता है, बल्कि यह सुनिश्चित करें कि आपका एप्लिकेशन जो इसे कॉल करता है वह एपीआई कॉल को शून्य मान नहीं देता है। आप अपनी विशेष भाषा का उपयोग करने वाले आईडीई में कोड के माध्यम से बस कदम उठा सकते हैं। – Tim

उत्तर

9

/usr/lib/fglrx/dri/fglrx_dri.so में कोड एक शून्य फ़ंक्शन पॉइंटर के माध्यम से कूद रहा है।

बेशक असली सवाल यह है कि, लेकिन जैसा कि स्वामित्व बंद स्रोत कोड है, आपके पास खोजने का कोई आसान तरीका नहीं है। यदि आप उस कोड में किसी भी फ़ंक्शन को कॉल कर रहे हैं जो कॉलबैक के रूप में फ़ंक्शन पॉइंटर्स लेता है तो सुनिश्चित करें कि आप उन्हें नल पॉइंटर्स पास नहीं कर रहे हैं, यह एक अच्छी शुरुआत होगी।

असल में हालांकि यह कोई समस्या नहीं है कि वाल्ग्रिंड आपको यह जानने में मदद करने की संभावना है कि मुझे डर है, और यह निश्चित रूप से स्मृति रिसाव के साथ कुछ भी नहीं है।

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