2012-07-03 19 views
20

से वालग्रिंड चेतावनियों को दबाएं मैंने आईओएस ऐप पर वालग्रिंड चलाने के लिए this approach का पालन किया। दुर्भाग्य से आईओएस एसडीके से संबंधित चेतावनियां मेरे ऐप से संबंधित किसी भी चेतावनी को ढूंढना लगभग असंभव बनाती हैं। क्या वालग्रिंड के लिए आईओएस दमन की एक सूची है इसलिए मुझे उन्हें खुद उत्पन्न करने की ज़रूरत नहीं है?आईओएस एसडीके

+1

+1, आज कुछ नया सीख लिया – doNotCheckMyBlog

+0

कोई भी चेतावनी विशेष रूप से मुख्य में है। आप दबाना चाहते हैं? – CodaFi

+0

@ कोडाफ़ी मुझे "सशर्त कूद या चाल का पूरा समूह मिल रहा है" अनियमित मूल्य पर निर्भर करता है कि अगर मैं गलत नहीं हूं तो सब कुछ एसडीके से आ रहा है। एक निकालने के लिए http://pastebin.com/fVHnhNh6 देखें। – marcog

उत्तर

3

ऐसा लगता है कि आप शायद कोड आपके main() में है कि इतना है कि यह वेलग्रिंड के लिए उचित विकल्प पारित करेंगे संशोधित कर सकते हैं की तरह। (ध्यान दें कि यह मानता है कि आप memcheck चला रहे हैं, जो डिफ़ॉल्ट विकल्प है, और जो भी आप अपने पेस्टबिन से चल रहे हैं)।

वेलग्रिंड/Memcheck पुस्तकालयों आप पहले से ही है, Obj सी/iOS SDK सहित के साथ त्रुटियों की रिपोर्ट की संभावना है। त्रुटियों रिपोर्टिंग से Memcheck को दबाने के लिए, इस का उपयोग करें:

यह स्वचालित रूप से छिपाता उत्पन्न करता है: --gen-suppressions=yes


भी कर सकते हैं/गहराई में थोड़ा और अधिक जाने के लिए और अनुकूलित आप नहीं करना चाहते हैं क्या करना चाह सकते हैं देखें:

एक दमन फ़ाइल जोड़ें पर विचार किया जाएगा: --suppressions=/path/to/file.supp.

दमन-प्रकार (दूसरा) लाइन shou ld रूप है:

Value1, Value2, Value4, Value8, Value16, जब 1, 2, 4, 8 या 16 बाइट्स के एक मूल्य का उपयोग कर एक uninitialised-मूल्य त्रुटि अर्थ:

Memcheck:suppression_type

Memcheck दमन प्रकार इस प्रकार हैं।

Cond (or its old name, Value0), जिसका अर्थ है एक अनियंत्रित CPU स्थिति कोड का उपयोग।

Addr1, Addr2, Addr4, Addr8, Addr16 क्रमश: 1, 2, 4, 8 या 16 बाइट्स की एक स्मृति का उपयोग के दौरान एक अमान्य पता अर्थ।

Jump, एक unaddressable स्थान त्रुटि के लिए एक कूद अर्थ।

Param, जिसका अर्थ है अमान्य सिस्टम कॉल पैरामीटर त्रुटि।

Free, गलत अर्थ या मुफ्त mismatching।

Overlap, memcpy में एक src/डीएसटी ओवरलैप या एक समान कार्य जिसका अर्थ है।

Leak, जिसका मतलब स्मृति रिसाव है।

अधिक जानकारी के लिए suppressing errors in the Valgrind docs भी देखें। ध्यान दें कि आपको एकाधिक दमन फ़ाइलों की अनुमति है, इसलिए मैं केवल अपना खुद का लिखूंगा कि आप हमेशा बाद में हटा सकते हैं।


हालांकि, अगर आप को देखने के लिए क्यों उन त्रुटियों को प्रदर्शित कर रहे हैं चाहते हो सकता है। ऐसा लगता है कि उनमें से बहुत से एसडीके हैं, जिनके लिए आप अनदेखा करना चाहते हैं - लेकिन संभावित रूप से ट्रैक उत्पत्ति (जो आपने किया है) चालू करने के बाद और मामले में बस अपना कोड जांचना।

अप्रारंभीकृत मूल्य त्रुटियों जगह है जहाँ आप अप्रारंभीकृत मूल्यों (डुह) के बारे में चेतावनी दी जा रही हैं - हालांकि, यह केवल यह करता है आप एक गैर-आरंभिकृत मूल्य है कि कुछ अलग करने के बाद से वहाँ अप्रारंभीकृत मूल्यों के अन्य उपयोगों हैं जा रहा है जब।

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

आप पहले से ही जानते हैं कि आप कहां से आ रहे हैं, यह पता लगाने के लिए आप --track-origins=<yes|no> (डिफ़ॉल्ट पर डिफ़ॉल्ट) चालू कर सकते हैं, और ऐसा लगता है कि वे एसडीके से हैं। जो लोग नहीं जानते हैं, --track-origins वास्तव में काफी सहायक है क्योंकि जब यह बंद हो जाता है, तो आप केवल इतना जानते हैं कि एक "प्रारंभिक" तरीके से एक अनियमित मूल्य का उपयोग किया जा रहा है, लेकिन आपको पता नहीं होगा कि अनियमित मूल्य कहां से आया था।

याद रखें कि --undef-value-errors=no का उपयोग भी किया जा रहा है, तो मेमचेक इसे हां में सेट करने से इनकार कर देगा।

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