2010-07-11 16 views
5

मैंने एक सी # एप्लिकेशन लिखा जो एक्सपी पर अच्छा चल रहा है लेकिन Vista/7 पर फ्रीज करता है। मुझे समस्या का विश्लेषण करने के लिए एक एप्लिकेशन डंप (डीएमपी फ़ाइल) मिला। मुझे समझ में नहीं आता कि सी # में स्टैक ट्रेस कैसे प्राप्त करें (जैसा कि मेरे पास निश्चित रूप से स्रोत कोड है)।सी # एप्लिकेशन डंप फ़ाइल का विश्लेषण करें

[email protected]() 
[email protected]() + 0xc bytes 
System.Windows.Forms.ni.dll!68bb8ea8() 
[Frames below may be incorrect and/or missing, no symbols loaded for System.Windows.Forms.ni.dll] 
System.Windows.Forms.ni.dll!68bb8ea8() 
System.Windows.Forms.ni.dll!68bb8997() 
System.Windows.Forms.ni.dll!68bb87e1() 
System.Windows.Forms.ni.dll!68b75931() 
[email protected]() + 0x33 bytes  
mscorwks.dll!_CallDescrWorkerWithHan[email protected]() + 0x9f bytes 
mscorwks.dll!MethodDesc::CallDescr() + 0x15a bytes 
mscorwks.dll!MethodDesc::CallTargetWorker() + 0x1f bytes 
mscorwks.dll!MethodDescCallSite::CallWithValueTypes_RetArgSlot() + 0x1a bytes 
mscorwks.dll!ClassLoader::RunMain() - 0x39040 bytes  
mscorwks.dll!Assembly::ExecuteMainMethod() + 0xa4 bytes  
mscorwks.dll!SystemDomain::ExecuteMainMethod() + 0x416 bytes 
mscorwks.dll!ExecuteEXE() + 0x49 bytes 
[email protected]() + 0x98 bytes 
mscoreei.dll!71f455ab()  
[email protected]() + 0x227 bytes 
[email protected]() + 0x8 bytes 
[email protected]@12() + 0x12 bytes  
[email protected]() + 0x27 bytes 
[email protected]() + 0x1b bytes 

किसी भी मदद की सराहना की जाएगी: मैं प्रतीकों से भरी हुई है, लेकिन यह प्रबंधित कोड लोड करने के लिए नहीं लगता है, यहाँ स्टैक ट्रेस है।

उत्तर

5

डंप फ़ाइलों का विश्लेषण दिल की बेहोशी के लिए नहीं है और थोड़ा अभ्यास की आवश्यकता है। एक उत्कृष्ट परिचय Advanced .NET Debugging के पहले कुछ अध्याय हैं जो आपको दिखाता है किका उपयोग कैसे करें, एसओएस डीबगर एक्सटेंशन (मूल कॉल के साथ प्रबंधित कोड को मैप करने के लिए आवश्यक है, जो आपको यहां चाहिए) part of the .NET SDK और SOSEX debugger extension जो कुछ शक्तिशाली एक्सटेंशन जोड़ता है एसओएस को आदेश।

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

बस उपरोक्त डंप को देखते हुए हमें बहुत कुछ नहीं बताता है, मुझे डर है। यदि आप विजुअल स्टूडियो, एनटीएसई या विनडबीजी के भीतर से त्रुटि को पुन: पेश नहीं कर सकते हैं तो आपका मित्र है। यहां से केवल एक चीज जो मैं बता सकता हूं वह यह है कि आपका प्रविष्टि बिंदु mscoree.dll से _CorExeMain है। लेकिन यह हर .NET असेंबली का बूटस्ट्रैप है। बाद में, एक फॉर्म लोड किया गया है और कुछ कोड निष्पादित किया गया है, लेकिन वास्तव में क्या? आपके निष्पादन योग्य, पीडीबी और अधिमानतः आपकी स्रोत फ़ाइलों के बिना, कुछ भी उपयोगी बताना मुश्किल होगा।

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