7

के साथ रिलीज मोड में एप्लिकेशन को डीबग नहीं कर सकता है हम रिलीज के लिए समाधान बना रहे हैं, लेकिन स्टूडियो 2010 पेशेवर का उपयोग करके संलग्न करने का प्रयास करते समय, कोई धागा कोई स्टैक जानकारी नहीं दिखा रहा है, न ही कोई ब्रेकपॉइंट सेट किया जा सकता है, आदिडीबगटाइप = पूर्ण

लक्ष्य विजुअल स्टूडियो/जेआईटी डीबगर को चल रहे प्रक्रिया में संलग्न करने में सक्षम होना है जबकि अधिकतम अनुकूलन लाभ संभव हो।

हमारी अधिकांश खोज 'डीबग के साथ संकलित: पूर्ण' के लिए नीचे आती हैं और आप डीबग करने में सक्षम होंगे, लेकिन ऐसा लगता है कि यह मामला नहीं है, जेआईटी रनटाइम में कोड को अनुकूलित करता है और इस प्रकार हम डीबग नहीं कर सकता, क्या यह सच है? क्या अनुकूलन को कम करने और डीबगिंग की अनुमति देने के लिए जेआईटी को संकलित करना और बता देना संभव है? (जबकि विस्तृत अनुकूलन में बनाए रखने)

अद्यतन

का उपयोग कर @ HansPassant का जवाब, मैं मॉड्यूल को देखा और देखा कि हालांकि PDBs, बाइनरी रूप में एक ही निर्देशिका में कर रहे हैं वास्तव में कोई डिबग प्रतीकों भेजा गया। मैंने जो भी देखा वह यह है कि मेरे पुस्तकालयों को 'उपयोगकर्ता कोड' - 'नहीं' के रूप में चिह्नित किया गया है, संभवतः यह कारण है कि यह स्वचालित रूप से लोड नहीं हुआ था। मैन्युअल रूप से प्रतीकों को लोड करके और 'बस-मेरा-कोड' अक्षम करना मैं ब्रेकपॉइंट्स सेट करने और ढेर देखने में भी सक्षम था।

प्रश्न अब: मेरा कोड उपयोगकर्ता कोड के रूप में क्यों नहीं चिह्नित किया गया है? क्या यह सामान्य व्यवहार है? क्या मैं इससे बचने के लिए इसे किसी भी तरह से अपने असेंबली में कॉन्फ़िगर कर सकता हूं?

+0

'और न ही कोई ब्रेकपॉइंट सेट किया जा सकता है' <- क्यों नहीं? क्या यह 'मिलान करने वाले प्रतीकों को नहीं मिला' त्रुटि संदेश है? – wal

+0

@wal कृपया अद्यतन प्रश्न देखें, यह गायब प्रतीकों का संयोजन था और 'बस-मेरा-कोड' मधुमक्खी अक्षम –

उत्तर

13

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

हालांकि आप निश्चित रूप से अभी भी कॉल स्टैक का निरीक्षण कर सकते हैं, आप उन विधियों को देखेंगे जो स्टैक ट्रेस में उल्लिखित नहीं थे। मूलभूत गलतियाँ आप कर सकते हैं:

  • जब आप डीबगर संलग्न करते हैं, तो आपको डीबगर प्रकार का चयन करने का विकल्प मिलता है। "प्रबंधित" का चयन करना सुनिश्चित करें, आपके पास मूल डीबगर
  • के लिए अधिक उपयोग नहीं होगा, सुनिश्चित करें कि आप सही धागे को देख रहे हैं, प्रोग्राम को मनमाने ढंग से स्थान पर टूटा जा सकता है। उपयुक्त थ्रेड
  • का चयन करने के लिए डीबग + विंडोज + थ्रेड का उपयोग करें सुनिश्चित करें कि आप वास्तव में अपने कोड में किसी स्थान पर टूटे हुए हैं। आप विंडोज ऑपरेटिंग सिस्टम डीएलएल या फ्रेमवर्क विधि के अंदर आसानी से समाप्त हो सकते हैं, इस मामले को देखने के लिए बहुत कम होगा। टूल्स + विकल्प, डीबगिंग, सिंबल और प्रतीक सर्वर सक्षम करें ताकि विंडोज के अंदर शुरू होने वाले स्टैक निशान सटीक
  • डीबगर पीडीबी फाइलों को ढूँढने में सक्षम होना चाहिए। डीबग + विंडोज + मॉड्यूल का प्रयोग करें, आप प्रक्रिया में लोड असेंबली देखेंगे। सबसे पहले सुनिश्चित करें कि जिसे आप डीबग करना चाहते हैं वह वास्तव में लोड हो गया है। राइट-क्लिक करें और "प्रतीक लोड जानकारी" का चयन करें। यह आपको दिखाता है कि यह पीडीबी फ़ाइल
  • "सिर्फ मेरा कोड" विकल्प भारी तरीके से प्राप्त हो सकता है, आपको कोड के महत्वपूर्ण हिस्सों में भाग लेने की संभावना है जो आपके नहीं हैं। उपकरण + विकल्प, डिबगिंग, सामान्य और उस विकल्प को बंद करें।
+2

(+1) 'मॉड्यूल' विंडो से पता चला कि मेरी असेंबली को उपयोगकर्ता कोड के रूप में नहीं माना जाता है, कृपया अद्यतन प्रश्न देखें –