2010-07-27 19 views
17

.NET 4.0 में डंप डीबगिंग समर्थन के साथ हम स्वचालित रूप से देख रहे हैं (कोर्स के उपयोगकर्ता से पूछने के बाद :) सी # प्रोग्राम के मिनीडम्प को हमारे मुद्दे ट्रैकिंग सिस्टम पर अपलोड करने के लिए क्रैश बनाते हैं (ताकि minidumps कारण को हल करने में सहायता कर सकें दुर्घटना का)।कुछ ढेर जानकारी रखते हुए प्रबंधित कार्यक्रमों के minidumps के आकार को कम करना?

WithFullMemory minidump प्रकार का उपयोग करते समय सब कुछ ठीक काम कर रहा है। हम दोनों ढेर और ढेर चर देख सकते हैं। दुर्भाग्य से छोटे सी # कार्यक्रमों के लिए भी (ज़िपित) डंप काफी बड़े हैं।

अगर हम "सामान्य" मिनीडम्प प्रकार हम एक बहुत छोटे से डंप मिल उपयोग करें, लेकिन नहीं भी चर जानकारी ढेर कामयाब डीबगर में उपलब्ध है। असल में, WithFullMemory से कम कुछ भी प्रबंधित डीबगर में काफी बेकार लगता है। हमने मॉड्यूल जानकारी को हमारे मॉड्यूल में सीमित करने के लिए MINIDUMP_CALLBACK_ROUTINE का उपयोग करने के कुछ प्रयास किए हैं, लेकिन ऐसा लगता है कि इसका प्रबंधन डंप पर लगभग कोई प्रभाव नहीं है लेकिन अभी भी प्रबंधित डिबगिंग को तोड़ने का प्रबंधन करता है?

किसी को भी कैसे मिनीडम्प ट्रिम करने के लिए यह कामयाब डिबगिंग के लिए उपयोगी रखते हुए कोई सुझाव है?

उत्तर

0

ClrDump आपकी मदद कर सकता है।

क्लडडम्प उपकरण का एक सेट है जो प्रबंधित अनुप्रयोगों के छोटे minidumps का उत्पादन करने की अनुमति देता है। अतीत में, (आकार में बहुत बड़ा) पूर्ण डंप का उपयोग करना आवश्यक था यदि आपको एक .NET अनुप्रयोग के पोस्ट-मॉर्टम विश्लेषण करने की आवश्यकता है। ClrDump एप्लिकेशन में सभी धागे के कॉल स्टैक को पुनर्प्राप्त करने के लिए पर्याप्त जानकारी वाले छोटे minidumps का उत्पादन कर सकते हैं।

1

क्लियरडंप के ऊपर वर्णित अनुसार बस fyi बहुत अच्छा लगता है लेकिन ऐसा लगता है कि यह केवल 1.1 के साथ काम करता है। और 2.0 रनटाइम्स।

1
पूरे सम्मान के साथ

, मैं दृढ़ता से साइन-अप करने के लिए एक Microsoft WinQual खाते के लिए, माइक्रोसॉफ्ट के साथ अपने आवेदन पत्र रजिस्टर प्रोत्साहित करते हैं।

http://www.microsoft.com/whdc/winlogo/maintain/StartWER.mspx

यह आपको न केवल माइक्रोसॉफ्ट के व्यापक दुर्घटना संग्रह और विश्लेषण सेवाओं का लाभ लेने के लिए अनुमति देगा (मुक्त करने के लिए!), लेकिन यह भी आप विंडोज 'अंतर्निहित के माध्यम से अपने अनुप्रयोगों के लिए फिक्स और पैच प्रकाशित करने की अनुमति देगा त्रुटि रिपोर्टिंग facilties में।

आगे, WinQual प्रोग्राम में भाग लेते हुए, उद्यम जो आपके ऐप को तैनात करते हैं और जो इन-हाउस विंडोज त्रुटि रिपोर्टिंग सिस्टम को नियोजित करते हैं, वे भी आपके ऐप के लिए पैच एकत्रित, रिपोर्ट और प्राप्त करने में सक्षम होंगे।

एक और लाभ यह है कि WinQual को नियोजित करते हुए, आप अपने ऐप लोगो को प्रमाणित करने के करीब एक कदम हैं!

प्रत्येक OEM & आईएसवी मैंने काम किया है जो WinQual का उपयोग करता है, अपने स्वयं के क्रैश संग्रह और रिपोर्टिंग सिस्टम को रोल करने की तुलना में प्रयास और व्यय की एक बड़ी राशि बचाता है।

+0

जितना मुझे WinQual समर्थन के रूप में: माइक्रोसॉफ्ट अभी भी गोपनीयता के मामले में कई उपयोगकर्ताओं के साथ एक बुरा प्रतिष्ठा है। मैं बहुत से लोगों को जानता हूं जो कभी भी उन दुर्घटनाओं में से एक को कभी नहीं भेजेंगे, जबकि वे खुशी से डेवलपर को सीधे भेज देंगे। कभी-कभी, भावना ट्रम्प तर्क देता है और अपना खुद का दुर्घटना संग्रह रोलिंग करने का तरीका है। लेकिन यह ऐप के लक्षित दर्शकों पर निर्भर करता है। –

+0

1) अधिकांश लोगों को माइक्रोसॉफ्ट की प्रतिष्ठा के बारे में एक राय है करने के लिए पर्याप्त परवाह नहीं है 2) कई उपयोगकर्ताओं बल्कि एक कंपनी/संस्था है कि वे नहीं पहचानते हैं की तुलना में माइक्रोसॉफ्ट के लिए एक क्रैश डंप भेजना होगा, पता या विश्वास। 3) मैलवेयर का एक बहुत सी उपयोगकर्ता चेतावनी संदेश पॉप अप करके उपयोगकर्ता डेटा को ट्रेल करता है जिसे उपयोगकर्ता हिट करता है और फिर यूएसी को अधिकृत करता है। अगली बात वे जानते हैं, उपयोगकर्ता की मशीन बूट नहीं होगी क्योंकि वे अब स्थापित मैलवेयर से संक्रमित हैं। उस समय का 9 0%, ओएस के अंतर्निहित त्रुटि रिपोर्टिंग आधारभूत संरचना का समर्थन करना बेहतर है। –

+0

सुझाव के लिए धन्यवाद, लेकिन WinQual हमारे लिए प्रासंगिक नहीं है। – Ziphnor

3

मैं सी ++ अनुप्रयोगों के लिए उपयोगी minidumps पैदा होगा स्थान बचाने के लिए निम्नलिखित झंडे का उपयोग करें:

MiniDumpWithPrivateReadWriteMemory | 
      MiniDumpWithDataSegs | 
      MiniDumpWithHandleData | 
      MiniDumpWithFullMemoryInfo | 
      MiniDumpWithThreadInfo | 
      MiniDumpWithUnloadedModules 

फ़्लैग मान DbgHelp.h में निर्दिष्ट कर रहे हैं और सी # में मार्शल करने की आवश्यकता होगी। कॉलबैकराउटिन निर्दिष्ट करके डंप को और प्रतिबंधित किया जाता है।

0

मैं एक सवाल MINIDUMP_TYPE क्या 'मिनट' मोड में डंप बनाने के लिए इस्तेमाल अपने उपकरण पैरामीटर पूछ ClrDump के लेखक को एक ईमेल लिखा था। मैं उसका जवाब यहां पोस्ट: What is minimum MINIDUMP_TYPE set to dump native C++ process that hosts .net component to be able to use !clrstack in windbg