में एक विंडोज सेवा प्रोग्राम डीबग करने का सबसे अच्छा तरीका क्या है मैं विंडोज सेवा में माइक्रोसॉफ्ट लॉग पार्सर का उपयोग कर रहा हूं। कार्यक्रम एक नियमित वेब पेज में काम करता है लेकिन जब मैं विंडोज़ सेवा में कोड डालता हूं तो यह काम नहीं करता है। मैंने विंडोज़ सेवा में ब्रेकपोंट लगाए लेकिन जब मैं कोड चलाता हूं तो प्रोग्राम ब्रेकपॉइंट पर नहीं रुकता है। तो मेरी समस्या निवारण के माध्यम से मैंने समस्या को लॉग पार्सर सॉफ्टवेयर और लिंक तक सीमित कर दिया है। तो या तो लिंक या लॉग पार्सर सॉफ्टवेयर समस्या पैदा कर रहा है। क्या आपके पास कोई विचार है?विजुअल स्टूडियो 2008
उत्तर
मैंने अतीत में इस तरह के कई तरीके किए हैं कि प्रोग्राम कैसे चलता है। मुझे लगता है कि #DEBUG प्रीप्रोसेसर डीबगर के आसपास निर्देशक के साथ सबसे आसान तरीका किया जाता है। लॉन्च() जिस तरह से आपने डीबगर को लॉन्च किया है। लॉन्च() कॉल असेंबली में संकलित नहीं किया जाएगा।
एक तरीका हमने यह भी किया है यह कार्य सिस्टम.Windows.Forms.MessageBox.Show ("संलग्न") के साथ है जो हमें "संलग्न" संवाद प्रदर्शित होने पर मैन्युअल रूप से डीबगर से अटैच करने की अनुमति देता है।
आखिरी तरीका जिसे मैं पसंद नहीं करता हूं, वह है कि आप सेवा के माध्यम से सेवा शुरू करने का विकल्प चुनते हैं। मूल रूप से सर्विसबेस का उपयोग करके सेवाओं को शुरू नहीं करना चुनते हैं। जब भी एक विशेष परम निकाल दिया जाता है, लेकिन कक्षा को कॉल करना जो सेवा के व्यवहार/मुख्य कार्य को समाहित करता है।
आपको विंडोज सेवा के साथ सीधे अपने डीबगर को संलग्न करने की आवश्यकता है। यह आपकी मदद कर सकता है: http://msdn.microsoft.com/en-us/library/7a50syb3%28VS.80%29.aspx।
क्या आप ऑनस्टार्ट विधि को डीबग करना चाहते हैं? यदि ऐसा है तो आप System.Diagnostics.Debugger.Launch()
या System.Diagnostics.Debugger.Break()
विधि का उपयोग कर प्रारंभ विधि चलते समय डीबगर को संलग्न करने का मौका पाने के लिए उपयोग कर सकते हैं, अन्यथा आप डीबगर को जोड़ने के साथ देर से रहेंगे।
मुझे लगता है कि सेवा प्रक्रिया में आपके डीबगर को जोड़ने का वसा बिल्ली का सुझाव सही लगता है। यदि वह अभी भी काम नहीं करता है, तो Debug.WriteLine और DebugView का उपयोग करने का प्रयास करें।
अंतिम बिंदु - मुझे विश्वास है कि आप इसके लिए 'Environment.UserInteractive' भी देख सकते हैं। –