2010-11-22 7 views
5

हम विज़ुअल सी ++ 6 के लिए बाउंड चेकर के साथ वर्षों से चल रहे हैं (मुझे लगता है कि यह बाउंड चेकर 5 या 6 भी था)। हमने वीएस -2008 (अंत में!) तक अपग्रेड किया है, और अब पुरानी बाउंड चेकर के लिए फॉलो-अप की आवश्यकता है।सी ++ बाउंड चेकर फॉलोअप

परिदृश्य कैसा है?
क्या उपकरण हैं?
शहर में कोई नया बच्चा?
समस्याओं के साथ निपटने वाले किसी भी नए विचार के लिए हमने स्मृति प्रोफाइलर्स का उपयोग किया?
इन उपकरणों के साथ आपके हालिया अनुभव?
सिफारिशें?

मुख्य अनुप्रयोग सी ++ कई COM DLL के साथ है, हम मूल, सी ++ और COM लीक और ऑब्जेक्ट्स को ट्रैक करना चाहते हैं। उस आकार के लिए बाउंड चेकर पहले से ही प्रदर्शन में दर्द था, डेटा की गड़बड़ी और इसकी कुछ सीमाओं को हल करना।

प्रबंधित अनुप्रयोगों (मुख्य रूप से सी #) के लिए समर्थन आवश्यक है, हालांकि यह एक अलग उपकरण हो सकता है।


संबंधित (लेकिन IMO अधूरा) प्रश्न: Modern equivalent of BoundsChecker for Visual Studio 2008


[संपादित करें]

Regardign टिप्पणी, "आधुनिक C++ में, तुम सिर्फ स्वयं जाँच प्रकार का उपयोग करें, और सीमाएं कभी नहीं टूटी जाती हैं ":

संदर्भ स्मार्ट पॉइंटर्स गिना जाता है चक्रीय संदर्भ हो सकता है। इंटरफ़ेसिंग COM घटकों को स्वाभाविक रूप से असुरक्षित है, क्योंकि इसमें बहुत से मैन्युअल मेमोरी प्रबंधन की आवश्यकता होती है। मेरे पास यूआई-कम तृतीय पक्ष सेवा लीक जीडीआई हैंडल है इसलिए यह हमारे रातोंरात परीक्षणों को दुर्घटनाग्रस्त कर दिया - विक्रेता ने इसे "अजीब" माइक्रोसॉफ्ट एपीआई पर दोष दिया। मुझे सी-आधारित पुस्तकालयों को इंटरफ़ेस करना है, मेरे पास कई विरासत कोड हैं जो संख्यात्मक व्यंजनों के अर्थ में आवंटन चालबाजी मानते हैं, एक अच्छी बात है और 3 अक्षरों से अधिक परिवर्तनीय नाम टाइपिस्ट के लिए हैं। मेरे पास इंजीनियरों से कोड है जिसके लिए std::vector<double>::iteratordouble *** की तुलना में बहुत अधिक डरावना दिखता है, अच्छी किस्मत सिग्नल प्रोसेसिंग में ठोस पृष्ठभूमि के बिना इन्हें विकसित और परीक्षण कर रहा है।

तो जब तक आप यहां नहीं आते, तब तक मूर्खतापूर्ण सी ++ कक्षाओं में कोड की एक लाख लाइनों के कोर को फिर से लिखना और समाहित करना और सुनिश्चित करें कि कुछ दर्जन उत्पाद अभी भी पहले के रूप में काम करते हैं, अपने स्मार्ट-आश्वासन को अपने आप में रखें। काश मैं एक मेमोरी चेकर की आवश्यकता नहीं होगी, लेकिन मैं करता हूँ। धन्यवाद।

+1

आधुनिक सी ++ में, आप केवल स्वयं-जांच प्रकारों का उपयोग करते हैं, और सीमाएं कभी नहीं टूटी जाती हैं। – Puppy

+0

वह लगभग मजेदार था, डेडएमजी। – peterchen

+0

@ माइकल - बधाई हो!: डी – peterchen

उत्तर

2

मेरे पास एक विशाल एप्लिकेशन (यहां काम पर) है, और नई सीमाएं जांचकर्ता 10.5 (अब 64 बिट ऐप्स का समर्थन करता है) इसके साथ काफी काम करता है। चाल मैक्स एक बार में devpartner सीमा परीक्षक की सभी चेकर सुविधाओं को चालू नहीं है। बस मेमोरी लीक चालू करें, या बस कुछ अन्य फीचर चालू करें, फिर अपना ऐप चलाएं। और हर तरह से मॉड्यूल को बाहर निकालें जिनकी आपको आवश्यकता नहीं है। ऐसी कुछ चीजें हैं जिनका उपयोग आप अपनी सेटिंग्स को ट्यून करने के लिए कर सकते हैं ताकि यह तेज़ी से बढ़ सके। लेकिन हाँ, यह एक प्रदर्शन हिट लेता है। लेकिन वह बॉलगेम का नाम है।

इंटेल के पैरारलल इंस्पेक्टर ने हमें हजारों और हजारों झूठी सकारात्मक जानकारी दी। इसका इस्तेमाल नहीं किया।

केवल 32 बिट ऐप्स पर काम करता है शुद्ध करें। यानी छोटे 32 बिट देशी ऐप्स। एक प्रबंधित सी ++ ऐप के साथ इसका उपयोग करने के बारे में भूल जाओ।

और रिकॉर्ड के लिए, यदि आपके पास 32 बिट ऐप है, तो मेमोरी विश्लेषण टूल सामान्य रूप से भारी मेमोरी ओवरहेड की वजह से बहुत अधिक काम नहीं करेंगे। और चूंकि आपके पास 32 बिट पता स्थान में बहुत सीमित स्मृति है, इसलिए आप जल्दी से कमरे से बाहर निकलते हैं, और उपकरण विफल हो जाते हैं।

+0

सैद्धांतिक रूप से, आप सभी मेमोरी ट्रैकिंग जानकारी को दूसरी प्रक्रिया में ले जा सकते हैं, लेकिन इससे मेमोरी विश्लेषण टूल पहले से ही धीमा हो सकता है (अनुमानतः) था। –

2

हमने बॉल्सशेकर, इंटेल के इंस्पेक्टर और शुद्धि का मूल्यांकन किया।

वे सभी कम या कम बकवास थे।

हमारे मुख्य आवेदन के लिए, बाउंड चेकर कई घंटे बाद इसे शुरू नहीं करेगा; यह केवल कुछ छोटे अनुप्रयोगों के लिए काम किया; लेकिन कुछ चीजें ढूंढें (मुझे लगता है कि हम चीजों को समझने के लिए अभी भी उनके संपर्क में हैं)

इंटेल इंस्पेक्टर काम करता है, लेकिन कोड का वाद्य यंत्र नहीं करता है, यह केवल निष्पादन योग्य पर चलता है (शायद इसके साथ उपयोग किए जाने पर बेहतर काम करता है इंटेल उत्पादों का पूरा सूट)।

शुद्धता बुरी तरह विफल रही; हम इसका इस्तेमाल कभी नहीं कर पाए।

हम अभी भी इसके बारे में उलझन में हैं।

मैक्स।

3

अस्वीकरण और चेतावनी: मैं माइक्रो फोकस, देवपार्टनर स्टूडियो और बाउंड चेकर उत्पादों के मालिक के लिए काम करता हूं।

देवपार्टनर स्टूडियो 10.5 (हालांकि आप इसे स्वयं खरीद सकते हैं) के हिस्से बाउंस चेकर 10.5, विज़ुअल स्टूडियो 2005, 2008 और 2010 को 32 और 64 बिट अनुप्रयोगों के लिए अप्रबंधित कोड का समर्थन करता है, वैसे ही यह दृश्य पर 32 बिट अनुप्रयोगों का समर्थन करता है स्टूडियो 6.0। X64 अनुप्रयोगों का समर्थन करने के लिए इसे बढ़ाने के दौरान, हमने कुछ बहुत पुरानी समस्याओं को पाया और ठीक किया, और कुछ वीएस 2010 अनुप्रयोगों में मौजूद .NET 4.0 कोड के बावजूद काम करने की शुरुआत की। मैं कहता हूं "इसके बावजूद" क्योंकि .NET 4.0 प्रक्रिया अंतरिक्ष में बहुत सारी ग़लत चीजें करने के लिए निकलता है, कुछ चीजें करते हैं जो माइक्रोसॉफ्ट हर किसी को नहीं करने की चेतावनी देता है, और उपकरणों के लिए अंतर्निहित प्रतिरोध की निश्चित मात्रा है बाउंड चेकर की तरह, जो अनिवार्य रूप से विशाल वायरस हैं।

वैसे भी, उस रिलीज (4 फरवरी) के बाद से, हमने इसे विंडोज 7 एसपी 1 (जो अभी तक काफी सार्वजनिक नहीं है) पर काम करने के लिए अपडेट किया है, और जहां तक ​​बाउंडशेकर का संबंध है, हम विजुअल स्टूडियो 2010 एसपी 1 के साथ काम करते हैं कुंआ। हमने एक बुरा .NET 4.0 जाल भी खोजा, और इसे नीचे ले जाने से रोकने के लिए निकाला। ये एन्हांसमेंट और फिक्स हमारे अगले सार्वजनिक अपडेट में उपलब्ध होंगे, उम्मीद है कि अगले महीने या उससे भी ज्यादा में।

+0

यदि किसी के पास माइक्रो फोकस देवपार्टनर स्टूडियो या बाउंड चेकर से संबंधित कोई प्रश्न हैं, तो कृपया http://community.microfocus.com/Forums/9_DevPartner पर हमारे मंच पर जाएं। –

+0

मंच बदल गया है, और स्थान बदल गया है। यह अब http://community.microfocus.com/ –

1

Boundschecker: मैं सिर्फ एक (& (^सदस्यता जो केवल मुझे मिलती 99 दिनों के लिए शापित उत्पाद का उपयोग करने खरीदा है, तो मैं बहुत कि के बारे में परेशान शापित कर रहा हूँ), लेकिन किसी भी तरह मैं बड़ा स्मृति मुसीबतों और सोचा हो रही थी मुझे यह बात चलाना चाहिए। ऐसा लगता है कि बहुत सी दिलचस्प चीजें हैं, लेकिन इतनी दुखी है कि इसे इस तरह से रखें: मेरा आवेदक अभी भी डीएलएल इनिट कोड में है; यह कम से कम दो घंटों तक चल रहा है, और अब तक यह तब तक नहीं मिला है जब तक ऐप सामान्य रूप से पहले कॉपल सेकेंड में नहीं होता है। बाउंडशेकर संख्यात्मक दिनों में 'बकवास' होता था, लेकिन ऐसा लगता है कि यह वास्तव में एक अन्य तकनीकी अनाथ है जो एक अवसरवादी द्वारा बेदखल किया जा रहा है व्यापार इकाई, जैसे बोर्लैंड कंपाइलर।

तो जब यह काम करता है तो मुझे वास्तव में यह पसंद है, इसमें बहुत अच्छी जानकारी है। मुझे बस यह देखने की ज़रूरत है कि क्या मैं वास्तव में कोई सभ्य परिणाम प्राप्त कर पाऊंगा। यह वर्तमान में 4+ जीबी रैम का उपयोग कर रहा है और अभी तक पूरी तरह से शुरू नहीं हुआ है। चूंकि मैं एक अपंग होम संस्करण के साथ win7/64 का उपयोग करता हूं जो केवल 12 जीबी को पहचान लेगा, मैं वास्तव में कुछ भी दिलचस्प होने से पहले स्मृति से बाहर हो सकता हूं। और यह कुछ समय से कुछ समय बाद होगा ...

+0

पर है क्या आपके पास माइक्रोसॉफ्ट के एप्लिकेशन सत्यापनकर्ता के साथ कोई भाग्य है? –

+0

मूल्य: $ 99 सामान्य कीमत की तुलना में गंदगी सस्ता है, जो $ 695 से शुरू होता है। प्रदर्शन: हम इस बारे में बहुत जानते हैं, और उत्पाद को बेहतर बनाने के लिए काम कर रहे हैं, लेकिन जब आप विचार करते हैं कि उत्पाद क्या करने का प्रयास कर रहा है, तो आप एक ही समय में पूर्ण सटीकता और कम प्रदर्शन प्रभाव मांगने के लिए नहीं कह सकते हैं। हम गति के लिए सटीकता बलिदान कर सकते थे, लेकिन हम बेवकूफ होने के लिए भुना हुआ होगा। हमने आम तौर पर सटीकता के लिए गति का त्याग किया है, और फिर हम धीमे होने के लिए भुना हुआ हो जाते हैं। अपने जहर का नाम दें। –

+0

"बॉम्बेचेकर ... न्यूमेगा दिनों में होता था, लेकिन ऐसा लगता है कि यह वास्तव में एक अन्य तकनीकी अनाथ है जो बोरलैंड कंपाइलर्स की तरह एक अवसरवादी व्यापार इकाई द्वारा बेदखल किया जा रहा है।" - आप सच्चाई से बहुत दूर नहीं हैं, लेकिन एक बात पर विचार करें: दोनों बाउंड चेकर और 1 99 0 के दशक से परीक्षण के अनुप्रयोगों में काफी वृद्धि हुई है। बाउंड चेकर ने आपके विशिष्ट 1 99 0 के आवेदन पर जल्दी से काम किया होगा, लेकिन तब से आपका सामान्य आवेदन बढ़ गया है, और बाउंडशेकर भी काफी बढ़ गया है। उस वृद्धि में से कुछ अच्छी तरह से इरादे से (लेकिन गलत निर्देशित) डिजाइनरों द्वारा वसा जोड़ा गया था। –

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