2012-04-05 13 views
8

यदि कोई वीबी 6 ऐप इवेंट व्यूअर में दिखाई देने के लिए Application Hang ईवेंट उत्पन्न कर रहा है, तो मैं एप्लिकेशन को क्यों लटक रहा हूं, इस बारे में और जानकारी कैसे प्राप्त कर सकता हूं?एप्लिकेशन हैंग इवेंट के बारे में अधिक जानकारी कैसे प्राप्त करें?

क्या Application Hang घटना का मतलब है कि ऐप जमे हुए और दुर्घटनाग्रस्त हो गया है, या बस यह अस्थायी रूप से लटका हुआ है?

सभी मैं इस घटना के लिए ईवेंट लॉग में मिलता है:

Hanging application [MyAppName].exe, version [MyAppVersionNo], hang module hungapp, version 0.0.0.0, hang address 0x00000000. 

पर्याप्त नहीं है यही कारण है कि और मैं यह क्यों व्यतीत कर रहा है के बारे में और अधिक जानकारी प्राप्त करने में सक्षम होना चाहता हूँ। ऐप को ईवेंट लॉग में अधिक विवरण प्रदान करने के लिए कौन से कोड में परिवर्तन या अन्य कदम उठाने की आवश्यकता है?

+0

क्या आपके एप्लिकेशन में लंबे समय से चलने वाले दिनचर्या हैं जब यह व्यस्त है और विंडोज संदेशों का जवाब देने में असमर्थ है? – jac

+0

ऐसा नहीं है कि मुझे पता है। यह इवेंट लॉग क्लाइंट साइट से आता है। मैं इस कार्यक्रम को उस समय क्या हो रहा था के बारे में अधिक जानकारी दिखाने के लिए चाहता हूं। – CJ7

+0

जब आप एप्लिकेशन लटकते हैं और फिर इसका विश्लेषण करते हैं और कॉल स्टैक को देखते हैं तो आप एक प्रक्रिया मेमोरी डंप (या उपयोगकर्ता इसे करने दें) कर सकते हैं। – MicSim

उत्तर

5

मैं विंडोज प्रदर्शन टूलकिट का उपयोग करने की सलाह देता हूं।उपयोग करने के लिए सबसे अच्छा संस्करण विंडोज आकलन & परिनियोजन किट, http://www.microsoft.com/download/en/details.aspx?id=28997

एक बार यह इंस्टॉल हो जाने के बाद, आप विंडोज प्रदर्शन रिकॉर्डर (WPR) शुरू करते हैं और रिकॉर्डिंग शुरू करने के लिए स्टार्ट बटन पर क्लिक करते हैं। इसके बाद, अपने ऐप के साथ समस्या का पुनरुत्पादन करें। फिर WPR पर वापस जाएं और सहेजें बटन दबाएं। इसके बाद, विंडोज प्रदर्शन विश्लेषक लोड करें और जेनरेट की गई * .ETL फ़ाइल खोलें। फिर आप ग्राफ़ एक्सप्लोरर में सिस्टम एक्टिविटी सेक्शन में जाना चाहते हैं, इसे विस्तारित करें, और यूआई विलंब ग्राफ ढूंढें (या यह सिस्टम गतिविधि पर पहला ग्राफ हो सकता है)। एक विश्लेषण टैब में विस्तृत संस्करण प्राप्त करने के लिए डबल क्लिक करें।

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

+0

उपरोक्त लिंक मर चुका है, इसे आजमाएं https://www.microsoft.com/en-US/download/details.aspx?id=39982 यह मुझे केवल 8.1 8.1 के लिए एडीके दिखाता है ... – Jakob

+0

मुझे लगता है कि यह इसका हिस्सा है अब एसडीके, विंडोज 10 से शुरू हो रहा है। https://dev.windows.com/en-us/downloads/windows-10-sdk –

2

एप्लिकेशन हैंग इवेंट का अर्थ है कि विंडोज ने फैसला किया है कि एप्लिकेशन अनुत्तरदायी है। चूंकि ईवेंट ऑपरेटिंग सिस्टम द्वारा उत्पन्न होता है, न कि एप्लिकेशन में, ईवेंट में अतिरिक्त जानकारी प्राप्त करने के आपके विकल्प बेहद सीमित हैं। , हैंगिंग एप्लिकेशन% 1, संस्करण% 2, लटका मॉड्यूल% 3, संस्करण% 4 पते लटका 0x% 5:

संदेश:

यह वही है एक आवेदन हैंग घटना पर उपलब्ध हो रहा है है।

से:

http://www.microsoft.com/technet/support/ee/transform.aspx?ProdName=Windows+Operating+System&ProdVer=5.2&EvtID=1002&EvtSrc=Application+Hang&LCID=1033

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

यदि आपके पास लॉगिंग जानकारी की कमी है, या आपके आवेदन में लॉगिंग फ्रेमवर्क है, तो वह जगह है जहां आपको अपने प्रयासों पर ध्यान केंद्रित करना चाहिए। उलझन यह है कि भविष्य में बेहतर लॉगिंग से आपको लाभ होगा। हालांकि लॉगिंग फ्रेमवर्क का उपयोग करें, ताकि आप उत्पादन वातावरण में डीबग स्तर लॉगिंग को अक्षम कर सकें, जब सब कुछ सुचारू रूप से चल रहा हो।

2

मैं इस मॉड्यूल में कोड की समीक्षा करके इस दृष्टिकोण से संपर्क करूंगा कि विंडोज़ ने निर्धारित किया है, जिसका नाम इवेंट लॉग में लिखा गया था। लटका घटना में अधिक जानकारी प्राप्त करने का प्रयास करना संभव नहीं होगा क्योंकि जब विंडोज ने यह निर्धारित किया है कि ऐप उत्तरदायी नहीं है, तो बहुत देर हो चुकी है।

लटक रहे मॉड्यूल में मैं DoEvents को एकाधिक कॉल जोड़ता हूं और साथ ही इवेंट लॉग में स्थिति संदेश लॉगिंग भी करता हूं। इस बिंदु पर एक लॉगिंग ढांचे को जोड़ना जटिलता पेश करेगा और इसमें डेटाबेस को संग्रहीत करने के लिए डेटाबेस या फ़ाइल एक्सेस शामिल होगा।

विंडोज सोचता है कि ऐप लटका है क्योंकि उसने संदेशों का जवाब देना बंद कर दिया है। दुर्भाग्यवश, आपके वीबी 6 ऐप में दूसरा थ्रेड लागू करना छोटा नहीं है, .NET के विपरीत। कभी भी कम नहीं, एक और धागा जोड़ना ऐप को उत्तरदायी रखेगा, लेकिन फिर भी आपको सवाल का जवाब देने के साथ छोड़ दिया जाएगा, "कोड को निष्पादित करने में इतनी देर क्यों लग रही है?"

0

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

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

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