2012-08-03 9 views
8

मेरे पास एक दूरस्थ सर्वर पर चल रही एक वेबसाइट है, और होने वाली अपवाद से कुछ जानकारी प्राप्त करना चाहते हैं। मैं वीएस स्थापित नहीं कर सकता या रिमोट डीबगिंग का उपयोग नहीं कर सकता, और कम सफलता के साथ WinDbg के विभिन्न संस्करणों का उपयोग करने की कोशिश कर रहा हूं। मेरे स्थानीय परीक्षणों में, मैं WinDbg को C++ अपवाद, या एक सीएलआर अपवाद को तोड़ने के लिए प्राप्त कर सकता हूं जिसे मैंने फेंक दिया, लेकिन 'कुछ फेंक दिया गया' की तुलना में अधिक जानकारी प्राप्त नहीं कर पाई।क्या मुझे वीएस डीबगर को जोड़ने के बिना सीएलआर अपवाद से स्टैकट्रैक मिल सकता है?

क्या WinDbg जाने का रास्ता है, या कोई और तरीका है, या क्या मैं पर्याप्त लॉगिंग नहीं करने के लिए खराब हूं?

+0

मैं कहूंगा कि आपको बेहतर लॉगिंग की आवश्यकता है, हाँ – YePhIcK

+0

मैं सेटअप करूँगा [adplus] (http://blogs.msdn.com/b/ntdebugging/archive/2009/05/18/capturing-adplus-clr-crashes .aspx) अस्थायी रूप से एक अपवाद फेंकने के लिए एक मिनीडम्प बनाने के लिए, फिर WinDbg के साथ minidump देखें। – vcsjones

उत्तर

14

प्रक्रिया के लिए WinDbg संलग्न है, तो इन आदेशों दर्ज करें:

.symfix 
sxe clr 
sxd av 
.loadby sos clr 
g 

निष्पादन (के बाद आदेश जाना) के लिए जारी रहेगा और जब भी CLR अपवाद फेंक दिया जाता है (या किसी अन्य बिना क्रिया का अपवाद) टूट जाएगा। जब भी यह CLR अपवाद पर टूट जाता है जैसा कि आप देख:

(xxxx.xxxx): CLR exception - code e0434352 (first chance) 

तो फिर तुम एसओएस !pe की तरह आदेश !dso ढेर में प्रबंधित वस्तुओं डंप करने के लिए उपयोग कर सकते हैं, ढेर डंप करने के लिए, अपवाद प्रकार प्रिंट करने की !ClrStack, आदि

संपादित करें: मेरे पास sxe और sxd आदेशों में टाइपो थे। इसे ध्यान में रखते हुए @MStodd के लिए धन्यवाद।

+0

क्या आपका मतलब 'एसएक्सई' और 'एसएक्सडी' के सामने बिंदु नहीं है? – MStodd

+0

@MStodd, अच्छा बिंदु! ध्यान देने के लिए धन्यवाद। मैंने सही आदेशों के साथ पोस्ट को अपडेट किया। –

+1

मैं बाद में अपनी गड़बड़ी मशीन पर कोशिश करने जा रहा हूं, लेकिन यह अच्छा लग रहा है। यह .NET 2.0 की तरह दिखता है, मुझे '.loadby sos clr' के बजाय' .loadby sos mscorwks' की आवश्यकता है। वह आवाज सही है? – MStodd

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