मेरे पास एक प्रक्रिया है (जिसे हर बार घड़ी-कुत्ते द्वारा शुरू किया जाता है, यह किसी कारण से रुक जाता है), जो आम तौर पर 200 एमबी मेमोरी का उपयोग करता है। एक बार मैंने देखा कि यह स्मृति को खा रहा है - मेमोरी के उपयोग के बारे में 1.5-2 जीबी, जिसका निश्चित रूप से कहीं "स्मृति रिसाव" होता है (उद्धरणों में "मेमोरी रिसाव", क्योंकि यह वास्तविक स्मृति रिसाव नहीं है - आवंटित स्मृति की तरह, कभी मुक्त नहीं हुआ और पहुँच योग्य नहीं - कृपया ध्यान दें, कि केवल स्मार्ट संकेत उपयोग किया जाता है तो, मैं या क्योंकि उच्च के कुछ बहुत बड़ा कंटेनर के बारे में सोचना (मैं भी नहीं मिला) कुछ इस तरह)क्या यह पता लगाने का कोई तरीका है कि प्रक्रिया के किस हिस्से ने अधिकांश मेमोरी का उपयोग किया, केवल जेनरेट की गई कोर फ़ाइल को देख रहा है?
बाद में, प्रक्रिया दुर्घटनाग्रस्त हो गया,। स्मृति उपयोग और कोर डंप उत्पन्न हुआ - लगभग 2 जीबी। लेकिन समस्या यह है कि मैं इस मुद्दे को पुन: उत्पन्न नहीं कर सकता, इसलिए valgrind
यहां मदद नहीं करेगा (मुझे लगता है)। यह बहुत ही कम होता है और मैं इसे "पकड़ नहीं सकता"।
तो, मेरा सवाल है - क्या प्रक्रिया का कौन सा हिस्सा पता लगाने के लिए एक्सई और कोर फ़ाइल का उपयोग करके कोई तरीका है, क्या अधिकांश मेमोरी का उपयोग किया गया है?
मैंने gdb
के साथ कोर फ़ाइल पर एक नज़र डाली, कुछ भी असामान्य नहीं है। लेकिन कोर बड़ा है, इसलिए कुछ होना चाहिए। क्या हुआ है, यह समझने का एक चालाक तरीका है, या केवल अनुमान लगाने में मदद मिल सकती है (लेकिन इस तरह के बड़े exe .., 12 धागे, लगभग 50-100 (अधिक हो सकता है) कक्षाएं, इत्यादि आदि)
यह एक है C++
आवेदन, RHEL5U3 पर चल रहा है।
एक्सके के साथ सी ++ टैग के लिए 5 अनुयायियों के साथ अपने coredump टैग का व्यापार करने पर विचार करें? अनुयायियों। सौभाग्य। – shellter
मैंने इस बारे में सोचा, लेकिन मुझे आश्चर्य हुआ कि यह सही है या नहीं। मैं इसे आज़मा दूंगा :) –
शुभकामनाएं; ये बग चूसते हैं। –