जबकि मैं आपकी अधिकांश समस्याओं पर मदद नहीं कर सकता (अभी तक!), मुझे लगता है कि हमारे C++ Test Coverage टूल आपको बहु-परीक्षण परीक्षण कवरेज डेटा को आसानी से प्रदान कर सकता है।
यह उपकरण आपके स्रोत कोड को मापता है; आप संकलित और इसे चलाते हैं। आप अपने कोड में विभिन्न ब्लॉक का प्रतिनिधित्व करते हुए (सस्ते) उपकरण जांच के साथ समाप्त होते हैं। उपकरण रिकॉर्ड करता है कि आपके प्रोग्राम के कौन से हिस्से निष्पादित होते हैं, नाममात्र रूप से एक बिट प्रति उपकरण जांच के साथ थोड़ा वेक्टर के रूप में। निष्पादन (या जब भी आप चाहें) के अंत में, यह बिट वेक्टर बाहर निकाला जाता है और दर्शक आपको कोड पर अतिरंजित दिखाएगा।
मल्टीह्रेड परीक्षण कवरेज प्राप्त करने की चाल यह जानना है कि हम आपको नियंत्रण प्रदान करते हैं ताकि यह परिभाषित किया जा सके कि उपकरण जांच कैसे काम करती है; वे मैक्रोज़ हैं। तो बजाय एक बूलियन सरणी पर अनिवार्य रूप से
probe[n]=true;
के डिफ़ॉल्ट मैक्रो का उपयोग, आप के बजाय एक पूर्णांक सरणी (या चतुराई से यह मान precomputing द्वारा सस्ता कुछ) पर
probe[n]|=1<<threadid;
लागू कर सकते हैं। यह लागू करने के लिए कोड की केवल कुछ पंक्तियां लेता है।
लोग इस तकनीकी रूप से सिंक्रनाइज़ेशन परेशानियों को नोट कर सकते हैं। यह सच है, लेकिन अधिकतर यह कवरेज डेटा के थोड़ा खो देता है, और इसके खिलाफ बाधाएं बहुत अधिक हैं। अधिकांश लोग सही के बजाय "बहुत अच्छा" डेटा से खुश हैं। यदि आप पूर्णता पर पर जोर देते हैं, तो आप कुछ परमाणु अद्यतन निर्देश का उपयोग करके एक उच्च सिंकोननाइज़ेशन मूल्य का भुगतान करेंगे।
हम आपको जांच डंपिंग तर्क पर भी नियंत्रण प्रदान करते हैं; आप थ्रेड-विशिष्ट कवरेज डेटा (कस्टम कोड रेंज की लाइनों के दसियों में) लिखने के लिए इसे संशोधित कर सकते हैं। परीक्षण कवरेज डेटा व्यूअर आपको थ्रेड-विशिष्ट कवरेज (केवल सही कवरेज वेक्टर चुनें) देखने देगा; इसमें के लिए अंतर्निहित सुविधा भी है जो कवरेज वैक्टर पर चौराहे/संघ/अंतर को आसानी से कंप्यूटिंग/प्रदर्शित करती है, जो आपको कवरेज-प्रति-थ्रेड का बिल्कुल सही संबंध देती है।
स्रोत
2011-10-13 04:55:16
शुभकामनाएं, मैं एक उचित उत्तर के लिए देख रहा हूं। मुझे लगता है कि आपको निष्पादन थ्रेड की पूरी समझ होनी चाहिए जिसे आप बहु में विभाजित कर रहे हैं। निष्पादन ग्राफों को प्रोफाइल करने और उत्पादित करने के लिए कई टूल हैं (एफएवी रेडगेट का प्रदर्शन प्रोफाइलर, मूल्यवान लेकिन भयानक है) लेकिन बिना किसी विनिर्देश के आप अंधेरे में शूटिंग कर रहे हैं। – Justin
@ जस्टिन आह मैं यह उल्लेख करना भूल गया कि जिस एप्लिकेशन पर मैं काम कर रहा हूं वह सी ++ में है। – fantasticsid
@ फ़ैंटैस्टिक: मैंने आपकी रुचि को दर्शाने के लिए अपना शीर्षक संपादित किया। –