2010-11-30 12 views
19

पृष्ठभूमि:! मैं एक WinForm आधारित .NET 4.0 डेस्कटॉप अनुप्रयोग कुछ धागे और टाइमर है और उपयोगकर्ता नियंत्रण के लिए कुछ GDI संसाधन का उपयोग करता है पर काम कर रहा हूँ। मेरे विकास के दौरान मैं आमतौर पर sysinternal के प्रोसेस एक्सप्लोरर में झांकने यकीन है कि वहाँ कुछ भी अपने आवेदन के साथ असामान्य जैसे GDI की गिनती संभालती है या उपयोगकर्ता वस्तुओं आदि नहीं है कि बनाने के लिएclr.dll LogHelp_TerminateOnAssert एक .NET 4.0 प्रक्रिया में

समस्या: प्रोसेस एक्सप्लोरर का उपयोग करते समय, मैंने पाया कि धागे प्रोसेस एक्सप्लोरर में अपने आवेदन की संपत्ति के लिए टैब एक बहुत और की प्रविष्टियों के बहुत सारे "clr.dll! LogHelp_TerminateOnAssert + 0x58f68" को दर्शाता है। क्या यह सामान्य है? मुझे लगता है कि ऐसा इसलिए नहीं है क्योंकि अन्य .net एप्लिकेशन (जो मैंने पहले लिखा था) में से कोई भी प्रोसेस एक्सप्लोरर में अपनी प्रॉपर्टी में एक ही प्रविष्टि दिखाता है।

LogHelp_TerminateOnAssert क्या है()? (मेरा मानना ​​है कि यह clr.dll में एक समारोह है)

क्यों LogHelp_TerminateOnAssert() कई बार कहा जाता हो रही है?

कोई भी पॉइंटर्स बहुत उपयोगी होगा।

अग्रिम धन्यवाद।

+0

मुझे वर्तमान में एक ही समस्या है जिसमें आंतरिक रूप से बहुत सारे अपवादों को अंदर से फेंक दिया जा रहा है। इस विधि से नेट। वर्तमान में मेरे पास कुछ संकेत हैं कि यह क्यों होगा। – Guy

+0

तो क्या आपने यह पता लगाया है कि इन अपवादों को क्यों फेंक दिया गया है? – silverspoon

+0

क्या आप बहुत सारे धागे का उपयोग कर रहे हैं? –

उत्तर

1

आप धागे का उपयोग कर उल्लेख - यह हो सकता है के बाद से प्रत्येक थ्रेड अपनी ही ढेर हो जाता है कि डिफ़ॉल्ट ढेर आकार अपवाद जो तब .NET रनटाइम में फंस जाता है के कारण कुछ बिंदु पर पार कर जा रहा है। धागे में आप किस तरह का काम कर रहे हैं (रिकर्सन, स्टैक वैरिएबल, आदि के बहुत सारे)?

मेरा मानना ​​है कि डिफ़ॉल्ट धागा ढेर आकार 1MB पर सेट है - धागा निर्माता में 4MB के ढेर आकार सेट करने का प्रयास करें और देखें कि यह त्रुटि बनी रहती है।

+0

धन्यवाद, मैं एक नज़र रखूंगा। – silverspoon

7

clr.dll! LogHelp_TerminateOnAssert + 0x58f68

बड़ी संख्या (+ 58f68) इंगित करता है कि clr.dll में वास्तविक विधि LogHelp_TerminateOnAssert से दूर है()। सही कॉल स्टैक प्राप्त करने के लिए आपको शायद प्रतीकों को ठीक करना चाहिए और पुनः प्रयास करना चाहिए। फिर आप यह पता लगा सकते हैं कि असली विधि क्या है।

यह LogHelp_TerminateOnAssert() नहीं है, इसलिए यह पता लगाने के लिए बेकार है कि LogHelp_TerminateOnAssert() क्या करता है।

प्रतीकों ठीक करने के लिए: प्रक्रिया Explorer में, Options/Configure Symbols पर जाएं, फिर

SRV*c:\symbols*http://msdl.microsoft.com/download/symbols 

दर्ज जहां c:\symbols पथ जहां डाउनलोड की गई फ़ाइलों संग्रहीत करना चाहते है।

+0

"प्रतीकों को ठीक करें" से आपका क्या मतलब है? धन्यवाद। – silverspoon

+2

जाओ विकल्प/कॉन्फ़िगर प्रतीक ... प्रतीकों पथ में प्रवेश SRV * c: \ प्रतीकों * http: //msdl.microsoft.com/download/symbols –

+0

@ThomasW। उत्तर के लिए धन्यवाद। सिर्फ यह कहना चाहता था कि मेरे लिए काम करने से पहले मुझे पथ में 'http' जोड़ना पड़ा था, किसी और को यह समस्या है। SRV * c: \ प्रतीकों * http: //msdl.microsoft।कॉम/डाउनलोड/प्रतीकों –