5

मुझे अपने सी # एप्लिकेशन से एक APPCRASH का अनुभव हो रहा है। रनटाइम एक त्रुटि संदेश देता है "इस एप्लिकेशन ने रनटाइम से असामान्य तरीके से इसे समाप्त करने का अनुरोध किया है"। फिर, जब मैं ठीक क्लिक करता हूं तो मुझे "समाधान के लिए ऑनलाइन जांचें", "करीबी प्रोग्राम" और "डीबग प्रोग्राम" विकल्प सामान्य के साथ "MyAplication ने काम करना बंद कर दिया है" संदेश मिलता है। जब मैं "अतिरिक्त विवरण" पर क्लिक करता हूं तो मुझे अतिरिक्त जानकारी के साथ APPCRASH हस्ताक्षर मिलता है। इसमें से कुछ मानव पठनीय है, इसमें से कुछ केवल हेक्स संख्या है। "अपवाद कोड" 40000015 है। "अतिरिक्त जानकारी" की भी पंक्तियां हैं। मेरा सवाल है: क्या ब्रह्मांड में कोई भी जानता है कि एप्रीसीआरएएस संदेश में क्या जानकारी है?APPCRASH संदेश का विवरण क्या है?

ऐसा लगता है कि संदेश किसी ऐसे व्यक्ति द्वारा पढ़ा जाना था जो इसका कारण बन सकता है। उत्तरों की खोज करते समय मुझे बहुत से लोग संदेश स्वरूपित करते हुए बिल्कुल वही मिला। दुर्भाग्य से, मुझे इस जानकारी का अर्थ क्या है इसका कोई स्पष्टीकरण नहीं मिला है।

इसके अलावा, मैंने "डीबग प्रोग्राम" विकल्प का प्रयास किया है, लेकिन यह अनुपयोगी है। यह मुझे सिस्टम डीएलएस में रखता है जिसमें कॉल कोड के कहीं भी मेरे कोड में से कोई भी नहीं है। मैंने जांच की है, और त्रुटि इस सिस्टम कोड में नहीं होती है।

"दोष मॉड्यूल" (इस कोड बाहरी DLLs का एक बहुत का उपयोग करता है), और गंभीर त्रुटि के रूप में एक और dll नामित APPCRASH संदेश शायद वहाँ होता है। लेकिन वह जानकारी बहुत उपयोगी नहीं है क्योंकि मुझे अपने कोड में जगह खोजने की ज़रूरत है जो बाहरी डीएलएल को खराब कॉल करता है (या इसे खराब स्थिति में रखता है)। अफसोस की बात है, जब मैं "मेरा कोड" कहता हूं तो मेरा मतलब यह है कि मैं जिस कोड के साथ काम कर रहा हूं उसका मतलब है। यह दो वर्षों में कई दर्जन लोगों द्वारा लिखित एक बड़ा कोडबेस है, इसलिए मैं केवल उन जगहों का अनुमान नहीं लगा सकता जो घातक कॉल कर सकते हैं। यही कारण है कि मैं APPCRASH संदेश से अधिक जानकारी प्राप्त करने की उम्मीद कर रहा था। यही कारण है कि मैं विवरण के साथ बहुत कठोर हो रहा हूँ। पूरी बात यह है कि बहुत सारे लाल टेप के साथ बहुत स्वामित्व है। यही कारण है कि मैंने APPCRASH संदेश सामग्री पोस्ट नहीं की है।

स्पष्ट होने के लिए, मैं आपसे मेरी समस्या को डीबग करने के लिए नहीं कह रहा हूं। मेरे पास त्रुटि का पुन: उत्पन्न करने का कोई तरीका नहीं है, और मैं किसी को भी अपने विशिष्ट मामले में त्रुटि का कारण बताने के लिए नहीं कह रहा हूं। मैं सिर्फ उन हेक्स संख्याओं को समझना चाहता हूं, और मैं कोई दस्तावेज नहीं ढूंढ पा रहा हूं।

+0

यह अपवाद कोड है जिसका उपयोग मूल सी या सी ++ कोड abort() फ़ंक्शन को कॉल करता है। हम इसे खोजने में आपकी सहायता नहीं कर सकते हैं लेकिन स्पष्ट रूप से यह "सिस्टम डीएलएस" में स्थित है जो आप खो गए हैं। –

+0

अपवाद सिस्टम सिस्टम कोड में नहीं होता है जो डीबगर ने मुझे अंदर रखा है; लेकिन संभव है कि एक अलग बाहरी डीएल में एक अपवाद हो रहा है। अगर यह एक निरस्त() कॉल से है, तो यह कहीं अप्रबंधित भूमि में मर रहा है। – user1646801

+1

लगता है जैसे आपको अप्रबंधित कोड में समस्याएं आ रही हैं। समस्या को अलग करने के लिए, मैं आपके कोड में [DllImport] की जांच करने का प्रयास करूंगा, इस पर टिप्पणी करें और देखें कि क्या आपको कम समस्याएं हैं या नहीं। अन्य विचार यह है कि यदि आपके पास तीसरे पक्ष के घटक हैं जिनके पास गलत अप्रबंधित कॉल हो सकती हैं। अंत में, WinDBG को आजमाएं और समस्या की तलाश करें। WinDBG मेरा आखिरी संसाधन होगा, क्योंकि मैं विशेषज्ञ नहीं हूं और यह डिबगिंग का एक बहुत ही कट्टर तरीका है। –

उत्तर

1

इसका मतलब है कि आपके पास बिना किसी अपर्याप्त अपवाद है और यह आपके एप्लिकेशन को क्रैश कर रहा है।

यह डिबग मोड में काम कर रहा है कि तुम क्या रिलीज़ संस्करण के बारे में अलग है यह देखने के लिए देखने की जरूरत है। क्या सभी पुस्तकालय मौजूद हैं? क्या आपके पास अपना app.config सेटअप है?

विंडोज लॉग के तहत अपने ईवेंट व्यूअर की जांच करें -> अधिक जानकारी के लिए आवेदन।

यदि आप एक अपवाद हैंडलर सेट अप करते हैं तो आपको स्टैक ट्रेस जैसे बेहतर जानकारी मिल जाएगी।

+0

हाय, जवाब देने के लिए धन्यवाद। दुर्भाग्यवश, मैंने सभी सामान्य चाल की कोशिश की है और मुझे बहुत दूर नहीं मिला है। वर्तमान में डीबग मोड में चल रहा है, और यह टूट जाता है। मेरे पास अनचाहे अपवादों को तोड़ने के लिए डीबगर सेट है, और यह किसी को पकड़ नहीं रहा है। ईवेंट व्यूअर में जानकारी ऐपक्रैश संदेश से अधिक विस्तृत नहीं है। – user1646801

+0

@ डीएमके - कुछ खराब गधे अपवाद हैं (जैसे स्टैक ओवरफ्लो एक्सेप्शन या आउटऑफमेमरी अपवाद) जो ऐपडोमेन राज्य को दूषित करते हैं, उन अपवादों को लॉग/कैश नहीं किया जा सकता है जब वे वास्तविक होते हैं –

0

आपको एक क्रैशडम्प का उत्पादन करने की आवश्यकता है जिसे तथ्य के बाद विश्लेषण किया जा सकता है। आपको रजिस्ट्री में कुछ बदलाव करने की आवश्यकता होगी, और फिर आप विजुअल स्टूडियो का उपयोग करके डंप फ़ाइल का विश्लेषण कर सकते हैं। उम्मीद है कि, आपको अधिक सुराग मिलेगा जैसे विशिष्ट कार्य जो विफल हो रहा है। http://blog.functionalfun.net/2013/05/how-to-debug-silent-crashes-in-net.html

आप DebugDiag, Microsoft से एक उपकरण में सेट करेंगे:

जानकारी के लिए इस वेबसाइट देखें।

मुझे बताएं कि चीजें कैसे जाती हैं या आपको कुछ बेहतर टूल मिलते हैं।

सादर,

डेव

8

यहाँ एक ऐप्लिकेशन क्रैश के संदेश का एक उदाहरण है:

Problem signature: 
Problem Event Name: APPCRASH 
Application Name: WINWORD.EXE 
Application Version: 12.0.4518.1014 
Application Timestamp: 45428028 
Fault Module Name: StackHash_7ae5 
Fault Module Version: 6.0.6000.16386 
Fault Module Timestamp: 4549bdc9 
Exception Code: c0000374 
Exception Offset: 000af1c9 
OS Version: 6.0.6000.2.0.0.256.4 
Locale ID: 1033 
Additional Information 1: 7ae5 
Additional Information 2: 4cf2e59e469447e0692da79a5a9446de 
Additional Information 3: 333f 
Additional Information 4: 583336399425ab3efc33bdfbb60895ee 

आवेदन नाम और आवेदन संस्करण, स्पष्ट हैं के रूप में टाइमस्टैम्प है (इस बदली हुई तारीख है फ़ाइल एक्सप्लोरर में, 32-बिट यूनिक्स टाइमस्टैम्प मान के रूप में एन्कोड किया गया)। दोष मॉड्यूल आमतौर पर एक डीएलएल नाम होता है, और अपवाद ऑफ़सेट DLL में हार्डवेयर निर्देश का ऑफसेट पता होता है जो त्रुटि उत्पन्न करता है। इस मामले में यह एक आंतरिक रनटाइम त्रुटि थी जहां कोई वैध मॉड्यूल पुनर्प्राप्त नहीं किया जा सका, इसलिए हमें वास्तविक मूल्य के बजाय स्टैकहाश मिला। संस्करण विंडोज़ में निष्पादन योग्य फ़ाइलों के सामान्य पीई संस्करण तार हैं। लोकेल आईडी वैश्वीकरण सेटिंग्स बैंक का उपयोग किया जा रहा है: 1033 एन-यूएस है।

अपवाद कोड का अर्थ here किया जा सकता है। इस उदाहरण में, त्रुटि एक STATUS_HEAP_CORRUPTION थी।

अतिरिक्त जानकारी फ़ील्ड अपारदर्शी डेटा हैं, और अपवाद कोड के आधार पर। मुझे उन क्षेत्रों पर किसी भी उपयोगी जानकारी के बारे में पता नहीं है, संभवतः कोई भी नहीं है, और संभवतः उन क्षेत्रों को उद्देश्य से अनियंत्रित किया गया है ताकि माइक्रोसॉफ्ट उन्हें आवश्यकतानुसार बदल सके। वे फ़ील्ड आमतौर पर बहुत सारी जानकारी के एमडी 5 हैंश होते हैं ... यह मूल रूप से वहां है ताकि बहुत सारी जानकारी की तुलना हैशकोड के माध्यम से समान/अलग हो सके ताकि आपको पता चले कि त्रुटि एक ही निष्पादन स्थिति के कारण है ।

0

विंडो देखने .net में एक अच्छी सुविधा है, प्रबंधित डीबगर सहायकों, देशी और प्रबंधित कोड interoperations MSDN article about using it here

एमडीए द्वारा फेंका अपवाद निवारण करने के लिए दृश्य स्टूडियो अपवाद में विन्यस्त किया जा सकता है।

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