2011-02-14 13 views
8

मुझे किसी प्रोग्राम से क्रैश डंप प्राप्त करने की आवश्यकता है। मैं इसे कैसे लूं? कार्यक्रम सी # में लिखा गया है। एक क्रैश डंप वास्तव में क्या है? यह कब बनाया जाता है? यह कहाँ से बचाया गया है? मैं इसे कैसे पढ़ूं?मैं क्रैश डंप कैसे प्राप्त करूं

+5

ओएस? प्लेटफार्म? भाषा? –

+0

क्या आपका मतलब है कि एप्लिकेशन को क्रैश होने पर आपको डंप बनाने की आवश्यकता है *, या क्या आपको बस चल रहे एप्लिकेशन की मेमोरी डंप लेने की आवश्यकता है? क्योंकि दोनों काफी अलग हैं। –

+2

http://blogs.msdn.com/b/debugger/archive/2009/12/30/what-is-a-dump-and-how-do-i-create-one.aspx - अच्छी तरह से समझाया गया! –

उत्तर

21

चूंकि आप कह रहे हैं सी # मुझे लगता है कि आप विंडोज प्लेटफॉर्म का उपयोग कर रहे हैं।

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

क्रैश के मामले में और एक क्रैश डंप से प्राप्त डेटा का पहला भाग कॉलस्टैक होगा। यह किसी दुर्घटना या उस बिंदु पर इंगित करता है जिस पर एक ऑपरेशन अवरुद्ध हो जाता है और कभी वापस नहीं आया है, इसलिए प्रोग्राम बैठता है और कुछ भी नहीं करता है।

संसाधन रिसाव के लिए एक प्रक्रिया के कई मेमोरी डंप को समय की अवधि में एकत्र किया जा सकता है और यह देखने के लिए जांच की जाती है कि स्मृति में कौन सी वस्तुएं बढ़ रही हैं। यह संकुचित करने में मदद कर सकता है कि कोड के कौन से हिस्से रिसाव पैदा कर रहे हैं। विशिष्ट मुद्दों को डीबग करने के बारे में और जानने के लिए मैं अत्यधिक this blog की अनुशंसा करता हूं।

डंप फ़ाइल को कैप्चर करने के कुछ तरीके हैं।

  1. ProcDump (http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx)
  2. विजुअल स्टूडियो 2010 (http://msdn.microsoft.com/en-us/library/vstudio/fk551230(v=vs.100).aspx)
  3. WinDbg - बुरा लेकिन अधिक से अधिक डराना अन्य उपकरणों

ProcDump आप बस कर सकते हैं के साथ करने के लिए नहीं:

c:\>procdump.exe -ma YourProcessName.exe 

इस आदेश का परिणाम YourProcessNa का एक पूर्ण स्मृति स्नैपशॉट होगा me.dmp को लिखा गया: \। -मा स्विच एक पूर्ण स्मृति छवि डंपिंग निर्दिष्ट करता है। यदि आप किसी दुर्घटना को डिबग कर रहे हैं या लटका रहे हैं तो आप संभवतः -मा स्विच के बिना दूर हो सकते हैं। जब आप डेटा संरचनाओं की जांच करने के लिए जाते हैं तो पूर्ण मेमोरी डंप के बिना ध्यान रखें, आपके पास शायद वैध डेटा नहीं होगा। पूर्ण मेमोरी डंप के बिना आपके पास अभी भी कॉलस्टैक डेटा होगा जो अक्सर दुर्घटनाओं और लटकने के लिए पर्याप्त होता है। मैं आमतौर पर हार्डड्राइव स्पेस के पक्ष में त्रुटि सस्ता है इसलिए पूर्ण डंप इकट्ठा करें।

Procdump स्वचालित रूप से समय अंतराल पर या जब कोई विशिष्ट स्थिति पूरी हो जाती है तो डंप लेती है। अधिक जानकारी के लिए उपरोक्त लिंक पर दस्तावेज़ पढ़ें। एक स्विच मैं अनुशंसा करता हूं -e है।

c:\>procdump.exe -ma -e YourProcessName.exe 

तुरंत डंप लिखने के बजाय यह केवल तब ही लिखा जाएगा जब आपका प्रोग्राम क्रैश हो जाए।

विजुअल स्टूडियो 2010 के साथ आप डीबगर के साथ प्रक्रिया को संलग्न कर सकते हैं और डंप फ़ाइल सहेज सकते हैं। (ध्यान रखें जब आप अपने प्रोग्राम को F5 डीबग करते हैं तो विजुअल स्टूडियो स्वचालित रूप से संलग्न होता है)। जब आपका प्रोग्राम "ब्रेक स्टेट" (ब्रेकपॉइंट, अनचाहे अपवाद, क्रैश) में होता है तो Debug मेनू में Save Dump As... का विकल्प होगा। फिर आप उस डंप को कहीं भी सहेज सकते हैं जहां आप चाहें।

चूंकि आपने सी # का उल्लेख किया है, इसलिए आप प्रबंधित डंप फ़ाइलों को एकत्रित करने की संभावना रखते हैं। विजुअल स्टूडियो 2010 का उपयोग करना सबसे आसान तरीका है। बस, आपके द्वारा बनाई गई डंप फ़ाइल खोलें क्योंकि आप किसी अन्य फ़ाइल के रूप में और डिबगिंग शुरू करेंगे।

हालांकि, यदि यह कोई विकल्प नहीं है तो आप हमेशा एसओएस एक्सटेंशन के साथ वीएस 2008 या विन डीबीजी का उपयोग कर सकते हैं। मैं विजुअल स्टूडियो 2010 की अत्यधिक अनुशंसा करता हूं हालांकि एसओएस एक्सटेंशन और सामान्य रूप से विनडबग में एक बहुत सीधी सीखने की वक्र है। एसओएस के बारे में अधिक जानने के लिए इन एमएसडीएन लेखों को देखें here और here

विजुअल स्टूडियो या procdump का उपयोग करने की सलाह देने का एक और कारण यह है कि वे आपके द्वारा अपेक्षित डंप फ़ाइल एकत्र करेंगे। मैं टास्क मैनेजर के "डंप फ़ाइल टूल बनाएं" की स्टीयरिंग साफ़ करने की अनुशंसा करता हूं। इसका कारण यह 32 बिट प्रक्रियाओं के 64 बिट डंप एकत्र करेगा जो डीबग करना बेहद मुश्किल है।

1

तुम भी WinDbg

http://www.windbg.org/

कोई क्रैश जब राम स्मृति की सामग्री को और प्रोसेसर के कुछ भागों को एक फ़ाइल में कॉपी कर रहे हैं डंप है उपयोग करने का प्रयास कर सकते हैं। यह फ़ाइल किसी त्रुटि के महत्वपूर्ण बिंदु पर बनाई गई है और समस्या को डीबग करने के लिए उपयोग किया जा सकता है।

इसने मेरे लिए अतीत में काम किया है। यह विंडोज़ में डंप को क्रैश करने के लिए एक कीबोर्ड शॉर्टकट है।

* Start Registry Editor. 
* Locate the following registry subkey: 
     o HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\i8042prt\Parameters 
* On the Edit menu, click Add Value, and then add the following registry entry: 
     o Name: CrashOnCtrlScroll 
     Data Type: REG_DWORD 
     Value: 1 
* Exit Registry Editor and then restart the computer. 

http://vinaytechs.blogspot.com/2010/01/how-to-get-crash-or-hang-dump.html

+2

CrashOnCtrlScrl विंडोज़ में कर्नेल-मोड क्रैश डंप (मौत की नीली स्क्रीन) को मजबूर करने के लिए है। यदि ओपी सी # का उपयोग कर रहा है, तो शायद वह चाहता है उससे अधिक है (हालांकि आपने उस अपडेट से पहले पोस्ट किया था)। –

+0

बेहतर तो पर्याप्त नहीं है। – sleath

+0

यह पता लगाने के दौरान कि कर्नेल-मोड डंप * से क्या उपयोगकर्ता-मोड क्या कर रहा था * संभव है; अगर मैं इससे बच सकता तो मैं ऐसा करना चाहता हूं। –

1

ल्यूक, एक क्रैश डंप पल में अपने आवेदन की स्थिति से संबंधित डेटा की एक पूरी बैग दुर्घटना हुआ है है, डंप करने के लिए इसे कहीं उन सभी जानकारी रिकॉर्ड करने के लिए, आम तौर पर मतलब है एक पाठ फ़ाइल में।

एक अपवाद तब होता है जब एक अपवाद होता है तो आप पूरे स्टैकट्रैक को लॉग इन करना चाहते हैं ताकि आप बाद में जांच कर सकें और देखें कि कौन सी विधि विफल रही है और किस अपवाद को फेंक दिया गया है, पैरामीटर मान क्या थे और इसी तरह। यह वास्तव में एक क्रश डंप नहीं है लेकिन कई मामलों में बहुत मदद करता है।

दुर्घटना डंप और अनुप्रयोग क्रैश के बारे में एमएस द्वारा हाल ही में विकसित कुछ, मुझे लगता है कि यह वास्तव में विंडोज 7 से संबंधित था नहीं था ...

यहाँ देखें: आवेदन रिकवरी और पुनः प्रारंभ

http://msdn.microsoft.com/en-us/library/cc948909(v=vs.85).aspx

2

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e089ca41-6a87-40c8-bf69-28ac08570b7e&displaylang=en

: Windows XP पर आप इस उपयोगिता के साथ एक डंप फ़ाइल बना सकते हैं स्थापना निर्देशिका और कमांड लाइन जहां पीआईडी ​​प्रक्रिया आप के क्रैश डम्प प्राप्त करना चाहते हैं की पीआईडी ​​है से रन

userdump PID 

को 10

एक बार स्थापित ब्राउज़ (आप कार्य प्रबंधक में इस पा सकते हैं, लेकिन आप हो सकता है मानक दृश्य में कॉलम जोड़ने की आवश्यकता है)।

यह फ़ाइल तब विजुअल स्टूडियो में खोली जा सकती है - आपको केवल यह सुनिश्चित करने की आवश्यकता है कि आपके पास प्रतीक हैं।

विंडोज 7 में सिर्फ सही कार्य प्रबंधक में प्रक्रिया पर क्लिक करें और

+6

मैं अत्यधिक कार्य प्रबंधक के "डंप फ़ाइल बनाएं" का उपयोग न करने की अत्यधिक अनुशंसा करता हूं। 64 बिट सिस्टम पर यह 32 बिट प्रक्रियाओं के 64 बिट डंप बनाता है। ये डंप फ़ाइलें बहुत अधिक बेकार हैं जब तक आप केवल WinDbg और WOW64 एक्सटेंशन का उपयोग नहीं करना चाहते हैं: http://msdn.microsoft.com/en-us/library/aa384163(VS.85).aspx। – Evan

2

उपयोग ADPlus "डंप फ़ाइल बनाएँ"। यह विंडोज के लिए डिबगिंग उपकरण के साथ आता है। यह इसकी होम निर्देशिका के नीचे क्रैश डंप के फ़ोल्डर्स बनाएगा। आप बाद में WinDbg का उपयोग कर उनका विश्लेषण कर सकते हैं।

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