दृश्य स्टूडियो 2019 में C ++ के लिए आउट-ऑफ-द-प्रक्रिया डिबगर

Visual Studio 2019 पूर्वावलोकन 1 C ++ के लिए एक बेहतर डिबगर का परिचय देता है जो अपने संसाधन-गहन घटकों को होस्ट करने के लिए बाहरी 64-बिट प्रक्रिया का उपयोग करता है। यदि आपको पहले C ++ एप्लिकेशन डीबग करते समय मेमोरी की समस्या थी, तो अब इन समस्याओं को बड़े पैमाने पर Visual Studio 2019 के साथ हल किया जाना चाहिए।

नीचे युद्ध 4 के गियर्स डिबगिंग का एक व्यावहारिक उदाहरण है।



आवश्यक शर्तें


प्रतिक्रिया देते हुए, C ++ डेवलपर्स ने अक्सर जटिल C ++ अनुप्रयोगों को डीबग करते समय उच्च मेमोरी उपयोग से जुड़ी समस्याओं के बारे में बात की। एक बड़ी मेमोरी खपत प्रतीक डेटा की एक बड़ी मात्रा से जुड़ी होती है, जिसे डीबगर को डिबगर विंडो में लोड और प्रदर्शित करना होगा। इसके अलावा, इस जानकारी की मात्रा काम के दौरान लगातार बढ़ रही है। अंततः, Visual Studio प्रक्रिया स्मृति से बाहर होने के कारण विफल हो सकती है।

हमने इस समस्या को कम करने के लिए Visual Studio 2017 में महत्वपूर्ण सुधार किए हैं। उदाहरण के लिए, अद्यतन 15.6 के लिए / डीबग: फास्टलिंक के लिए मेमोरी ऑप्टिमाइज़ेशन को अपडेट करें, जिससे डिबगर द्वारा मेमोरी की खपत में 30% की कमी हुई। चूंकि हम Visual Studio 2019 में इस समस्या से बचने का प्रयास करते हैं, इसलिए हमने मेमोरी-इंटेंसिव घटकों को एक अलग 64-बिट प्रक्रिया में स्थानांतरित कर दिया।

केस स्टडी: 4 युद्ध के गियर्स डीबगिंग


हमने यह सुनिश्चित करने के लिए आंतरिक और बाहरी भागीदार टीमों के साथ मिलकर काम किया कि हम डिबगर के लिए किए गए परिवर्तनों को बड़े, वास्तविक दुनिया के अनुप्रयोगों में मान्य और मान्य किया गया था। नीचे हमने cdpv से वीडियो डुप्लिकेट किया। यह गठबंधन द्वारा विकसित युद्ध 4 के गियर्स को डीबग करते समय विजुअल स्टूडियो 2017 और विजुअल स्टूडियो 2019 के बीच मेमोरी उपयोग की समानांतर तुलना दिखाता है। गेम कोड को देखने और चरों की जाँच करने के कुछ ही मिनटों बाद विजुअल स्टूडियो 2017 की मेमोरी का उपयोग 1.3 जीबी तक बढ़ा दिया जाता है। विजुअल स्टूडियो 2019 एक ही परिदृश्य में बेहतर मेमोरी उपयोग प्रदान करता है: उपयोग की गई मेमोरी लगभग 285 एमबी रहती है, क्योंकि प्रतीक डेटा 64-बिट डीबगर वर्कफ़्लो में संग्रहीत होता है।



सब कुछ अब रनटाइम में भी बेहतर काम करता है।

असमर्थित परिदृश्य और कुछ ज्ञात मुद्दे


  • यह सुविधा 32-बिट विंडोज पर समर्थित नहीं है।
  • C ++ / CLI मॉड्यूल के प्रतीक अभी भी प्रक्रिया में लोड हो रहे हैं
  • डिप्रेस्ड C ++ एक्सप्रेशन इवैल्यूएटर ऐड-ऑन ( यहां एक उदाहरण) इस मोड में समर्थित नहीं हैं।

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



Microsoft डेवलपर समुदाय @msdevru, डेवलपर्स के लिए Microsoft डेवलपर समुदाय के चैनल और नई तकनीकों में रुचि रखने वाले सभी लोगों ने हमें इस लेख को तैयार करने में मदद की।

Source: https://habr.com/ru/post/hi433992/


All Articles