.NET clr20r3 अपवाद पैरामीटर्स P1..P10 का निर्णय लेना


79

मैं पी 1 पर अर्थ को समझने की कोशिश कर रहा हूं ... पी 10 पैरामीटर एक से जुड़ा clr20r3है जो इवेंट लॉग को लिखा जाता है जब मेरा एप्लिकेशन अपवाद अनुभव करता है।

सबसे अच्छा मैं पा रहा है:

  • P1 : होस्टिंग प्रक्रिया ( उदाहरण के लिए w3wp.exe )
  • P2 : होस्टिंग प्रक्रिया संस्करण ( जैसे 6.0.3790.1830 )
  • P3 : ??? ( उदा 42435be1 )
  • P4 : वह असेंबली जिसमें से अपवाद उठाया गया था ( उदाहरण के लिए mrtables.webservice )
  • P5 : असेंबली संस्करण ( जैसे 2.1.2.0 )
  • P6 : ??? ( उदा 4682617f )
  • P7 : ??? ( उदा 129 )
  • P8 : ??? ( उदा 50 )
  • P9 : अपवाद प्रकार उठाया ( उदाहरण के लिए system.argumentexception )
  • P10 : ??? ( उदा NIL )

Clr20r3 के लिए Googling हजारों नमूना पैरामीटर मान प्रदान करता है, जिसमें से कोई एक पैटर्न प्राप्त करने का प्रयास कर सकता है।

लेकिन मैं पैरामीटर अर्थों पर प्रलेखन की उम्मीद कर रहा हूं, जैसा कि शिक्षित अनुमानों के विपरीत है।


संपादित करें: हालांकि मैं विहित दस्तावेज़ीकरण के लिए आशा कर सकता हूं, वास्तव में मुझे यह देखकर खुशी होगी कि एक स्टैक ट्रेस के साथ, किस लाइन पर फेंका गया है।

बोनस पढ़ना


जवाबों:


81

यहां वॉटसन बकेट्स की जानकारी दी गई है

  1. Exe फ़ाइल का नाम
  2. Exe फ़ाइल असेंबली संस्करण संख्या
  3. Exe फ़ाइल स्टैम्प
  4. Exe फ़ाइल पूर्ण असेंबली नाम
  5. असंगत विधानसभा संस्करण
  6. असंबद्ध विधानसभा टाइमस्टैम्प
  7. असेंबली विधि दोष
  8. दोषपूर्ण विधि के भीतर दोषपूर्ण विधि IL ऑफसेट
  9. अपवाद प्रकार

और यहाँ भी उसी पर एक MSDN लेख है।

नमूना:

  Problem Signature 01: devenv.exe
  Problem Signature 02: 11.0.50727.1
  Problem Signature 03: 5011ecaa
  Problem Signature 04: Microsoft.VisualStudio.SharePoint.Project
  Problem Signature 05: 11.0.60226.0
  Problem Signature 06: 512c2dba
  Problem Signature 07: 18a8
  Problem Signature 08: 1d
  Problem Signature 09: System.NullReferenceException

2
क्या आपके पास एक संदर्भ लिंक होगा जो वॉट्सन बकेट के बाकी दस्तावेजों का दस्तावेजीकरण करता है? लिंक किए गए लेख में केवल उनमें से तीन का उल्लेख है (और केवल उनका उल्लेख करने के लिए होता है "उदाहरण के लिए, बाल्टी पी 4 में फॉल्टिंग मॉड्यूल का वर्णन किया गया है, बाल्टी पी 9 अपवाद के प्रकार को प्रदर्शित करता है जो अखंडित हो गया, और बाल्टी पी 8 आईएल ऑफसेट का प्रतिनिधित्व करता है, जिसके अपवाद मूल रूप से फेंका गया था। " )
इयान बॉयड

2
मैंने इसके बारे में एक नमूना जोड़ा है
कीकनेट

111

P7 और P8 यह पता लगाने के लिए महत्वपूर्ण हैं कि P9 अपवाद को कहां से उठाया गया था। P4 का उपयोग यह जानने के लिए करें कि किस असेंबली को देखना है। Ildasm.exe चलाएं और उस असेंबली को खोलें। फ़ाइल + डंप, "टोकन मान" चेकबॉक्स पर टिक करें, ठीक है और कहीं .il फ़ाइल को सहेजें।

पाठ संपादक में फ़ाइल खोलें। P7 आपको टोकन की विधि देता है, यह 0x06 से शुरू होता है, टोकन मूल्य "06000129" का उत्पादन करता है। निम्न को खोजें:

.method /*06000129*/

जो आपको मेथड नाम देता है, वहाँ से देखो .class को खोजने के लिए, जो आपको क्लास का नाम देता है।

P8 आपको IL ऑफसेट देता है। पाया गया .method से, उस निर्देश के लिए IL_0050 को देखें जिसने अपवाद को उठाया था। इसे वापस अपने स्रोत कोड में मैप करना थोड़ा मुश्किल है लेकिन आप शायद इसका पता लगा लेंगे। यदि आवश्यक हो तो रिफ्लेक्टर का उपयोग करें।

सामान्य तौर पर, AppDomain.UnhandledExceptionइन वॉटसन क्रैश बाल्टी के रिवर्स-इंजीनियरिंग के दर्द से बचने के लिए एक ईवेंट हैंडलर लिखें । e.ExceptionObject.ToString()अपवाद संदेश और स्टैक ट्रेस दोनों प्राप्त करने के लिए मान लॉग करें ।


2
यदि लाइब्रेरी कोड में अपवाद होता है, तो आपको यह पता लगाने की आवश्यकता है कि स्टैक ट्रेस वैसे भी हो सकता है कि आपका कौन सा कोड स्टैक पर था। (यदि Microsoft .NET के लिए उस डायलॉग को अच्छे से संशोधित करता है तो अच्छा होगा।)
जेसन क्रासोवेती

1
UnhandledException को हैंडल करने के अलावा, यह Main के अंदर राइट / पकड़ने की कोशिश करने में भी मदद करता है, क्योंकि कभी-कभी UnhandledException हैंडलर को इंस्टॉल करने से पहले समस्या होती है।
निशान लता

1
मुझे लगता है कि यह मुझे मेरे दोस्त को बचाने जा रहा है। मुझे एक ASP.NET एप्लीकेशन मिली है जो मेरी गोद में गिरी हुई है जो एप्लिकेशन पूल को क्रैश करती रहती है - और क्रैश समय के आसपास CLR20R3उन Pमानों के एक समूह के साथ एक त्रुटि सूची सही लॉग हो रही है। यह गड़बड़ हो सकता है, लेकिन यह शायद मुझे एक समाधान की ओर ले जाएगा, लेकिन अंत में मुझे इस कोड को संशोधित करना होगा और कुछ वास्तविक लॉगिंग प्राप्त करना होगा।
माइक पेरेनॉड

1
बहुत उपयोगी +10 अगर मैं कर सकता था - मेरे मामले में यह एक StackOverFlow अपवाद था और मेरे कैच ब्लॉग ने निष्पादित नहीं किया।
मार्क

1
इसका अनुसरण करते हुए, मैंने पाया है कि फ़ंक्शन हमारे कोड को क्रैश कर रहा है एक अमूर्त वर्चुअल फ़ंक्शन है .. विधि / * 06003452 * / सार्वजनिक हिड्सबिग न्यूज़लोड सार वर्चुअल इंस्टेंस उदाहरण पढ़ें ([में] [बाहर] uint8 [] बफर, int32 ऑफसेट int32 गिनती) cil प्रबंधित {} // पद्धति का अंत स्ट्रीम :: पढ़ें
स्टीवन स्कॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.