c# मैं कैसे उपाय करूं "ब्रेकपॉइंट वर्तमान में हिट नहीं होगा। इस दस्तावेज़ के लिए कोई प्रतीक लोड नहीं किया गया है। "चेतावनी?




.net visual-studio (24)

एक्सप्रेस संस्करण पर सी # डेस्कटॉप एप्लिकेशन। काम किया तो 5 सेकंड बाद काम नहीं किया।

मैंने निम्नलिखित की कोशिश की।

  • डीबग कॉन्फ़िगरेशन सुनिश्चित करें, ध्वज डीबग करें, और पूर्ण डीबग जानकारी सभी असेंबली पर सेट की गई है।
  • मेरी पूरी मशीन से परियोजना से संबंधित सभी बिन और ओबीजे फ़ोल्डर्स और सभी डीएलएल हटाएं।
  • स्क्रैच से समस्या पैदा करने वाली परियोजनाओं को मनोरंजन करें।
  • रीबूट।

मेरे पास समाधान में दो WinForms परियोजनाएं हैं I उनमें से एक डीबग जानकारी लोड करता है, कोई नहीं करता है। वे दोनों उस असेंबली को संदर्भित करते हैं जिसे मैं प्रोजेक्ट फ़ाइल में बिल्कुल उसी तरह डीबग जानकारी प्राप्त करने का प्रयास कर रहा हूं। कोई विचार?

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


इन सभी चीजों को करने के बजाय बस

बंद करें और फिर से खोलें

समाधान यह मुद्दा ठीक करेगा


मैंने ऊपर दिए गए सभी उत्तरों को ध्यान से पढ़ा है, लेकिन उनमें से कोई भी मेरी समस्या का समाधान नहीं कर पाया है।

मेरे मामले में, मैं कक्षा पुस्तकालय (डीएलएल) संकलित कर रहा था। डीबग -> मॉड्यूल में कोई मॉड्यूल लोड नहीं होता प्रतीत होता है, इसलिए मैं मैन्युअल रूप से प्रतीकों को भी लोड नहीं कर सका।

मेरा समाधान इस कोड को मेरे कोड में जोड़ना था:

System.Diagnostics.Debugger.Launch();

एक बार यह कोड पहुंचने के बाद, एक अपवाद ट्रिगर किया जाता है और .NET Framework एक संवाद बॉक्स दिखाता है जिसमें विजुअल स्टूडियो (यानी वीएस 2008 का नया उदाहरण, वीएस 2013 का नया उदाहरण इत्यादि) आप प्रोग्राम को डीबग करने के लिए उपयोग करना चाहते हैं। आप लोड की गई परियोजना के साथ वीएस का मौजूदा उदाहरण चुन सकते हैं। यह प्रक्रिया को आपके वीएस सत्र में संलग्न करेगा और सभी प्रतीकों को लोड करेगा, और अब आप अपनी परियोजना को डीबग कर सकते हैं।

बेशक, संकलन डीबग कॉन्फ़िगरेशन का उपयोग करके किया जाना चाहिए, रिलीज नहीं।


मुझे पता है कि मुझे देर हो चुकी है, लेकिन मैंने सोचा कि मैंने कुछ गलत किया है और उपरोक्त चरणों का पालन किया है, तो मुझे एहसास हुआ कि मैं समाधान कॉन्फ़िगरेशन को गलती से 'रिलीज' पर सेट कर दूंगा :)


बस जांचें कि आपका समाधान रिलीज मोड में है या नहीं।


एएसपी.Net एप्लिकेशन के लिए, साइट के गुणों, एएसपी.नेट टैब की जांच करें। सुनिश्चित करें कि सही ASP.NET संस्करण चुना गया है।


मेरे मामले में "अनुकूलन कोड" मेरे प्रोजेक्ट गुणों में चेक किया गया था। इसने वीएस को मेरी असेंबली को "मेरा कोड नहीं" के रूप में देखा, और बदले में, इसके लिए प्रतीकों को लोड नहीं किया।

समाधान इसे अनचेक करना था।


आपको कंपाइलर सेटिंग्स में "डीबग जानकारी जेनरेट" सक्षम करने की आवश्यकता है


सबसे पहले अपने प्रोजेक्ट को दाएं माउस से पुनर्निर्माण करने का प्रयास करें प्रोजेक्ट पर क्लिक करें> पुनर्निर्माण यदि यह काम नहीं करता है, तो प्रोजेक्ट की क्लीन आज़माएं (सही माउस प्रोजेक्ट> क्लीन पर क्लिक करें)

अगर यह काम नहीं करता है तो यह जांचें:

  1. दायां माउस अपनी परियोजना पर क्लिक करें
  2. [गुण] का चयन करें
  3. [बिल्ड] टैब का चयन करें
  4. सुनिश्चित करें [DEBUG निरंतर परिभाषित करें] और [TRACE स्थिर परिभाषित करें] की जांच की जाती है
  5. बिल्ड टैबपृष्ठ के नीचे [उन्नत] बटन पर क्लिक करें
  6. सुनिश्चित करें कि [डीबग जानकारी:] [पूर्ण] पर सेट है
  7. [ठीक] पर क्लिक करें और परियोजना का पुनर्निर्माण ;-)

(चरण 6 .pdb फ़ाइलों को उत्पन्न करता है, ये डीबगिंग प्रतीक हैं)


Debug > Windows > Modules यह देखने के लिए कि कौन से मॉड्यूल लोड किए जा रहे थे, मुझे सही दिशा में डाल दिया।

मेरे मामले में आईआईएस एक्सप्रेस अस्थायी एएसपी.नेट फाइलों से एक अलग डीएलएल लोड करने लग रहा था।

समाधान?

  1. C:\Users\<YOUR USER>\AppData\Local\Temp\Temporary ASP.NET Files\vs ब्राउज़ करें
  2. इस निर्देशिका में सबकुछ हटाएं!

चयनित उत्तर ने मुझे अपनी समस्या को ठीक करने का नेतृत्व किया। लेकिन मुझे कुछ और चीजें करने की ज़रूरत है:

ड्रॉपडाउन में चयनित "डीबग" के साथ भी:

और परियोजना में गुण> बिल्ड:

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

फिर मैंने इसे "डीबग" करने के लिए सेट किया और यह .pdb फ़ाइल जेनरेट करना शुरू कर दिया। लेकिन मुझे पीडीबी और डीएलएल की मैन्युअल रूप से प्रतिलिपि बनाने की आवश्यकता है और वीएस देख रहे फ़ोल्डर में डाल दिया गया है (यहां वह जगह है जहां चयनित उत्तर ने मेरी मदद की):


मैंने इन सभी की कोशिश की और मेरा ब्रेक-पॉइंट काम नहीं कर सका ...

मैंने इस मुद्दे को ठीक करने के लिए क्या किया था

उस पृष्ठ में जहां मेरा ब्रेक-पॉइंट मार नहीं रहा था, मैंने फ़ोल्डर का चयन किया> एक मौजूदा आइटम जोड़ें और फिर पेज को अपने सेव पथ से चुनें। इसने ब्रेक पॉइंट को काम करना शुरू कर दिया।


मुझे भी वही समस्या थी जो मैंने x86 (या x64) में पूरे समाधान (जनरेटेड परियोजनाओं सहित) का पुनर्निर्माण किया था।

भले ही मैंने अपनी सभी परियोजनाओं को कॉन्फ़िगरेशन मैनेजर (Build-> ConfigManager) से x86 पर सेट किया है, लेकिन मेरी कुछ परियोजनाएं x86 पर सेट की गई हैं।

तो बस यह सुनिश्चित करने के लिए कि प्रोजेक्ट-> गुण-> डीबग टैब पर राइट क्लिक करें, कॉन्फ़िगरेशन और प्लेटफ़ॉर्म सत्यापित करें।


केवल स्पष्ट होने की जांच करने के लिए: सुनिश्चित करें कि आपके पास कॉन्फ़िगरेशन सेट 'डीबग' है और 'रिलीज़' नहीं है। आप 'रिलीज' मोड में स्टार्टअप प्रोजेक्ट को डीबग कर सकते हैं, लेकिन एक संदर्भित क्लास लाइब्रेरी नहीं।


मैं संलग्न स्क्रीनशॉट में दिखाए गए अनुसार 'डीबग करने के लिए कोड के प्रकार को स्वचालित रूप से निर्धारित करने' के विकल्प को 'प्रक्रिया से अटैचमेंट' में विकल्प सेट करके त्रुटि को ठीक करने में सक्षम था।

बस नीचे दिए गए चरणों का पालन करें:

  • मेनू बार से डीबग पर जाएं
  • प्रक्रिया में अटैचमेंट पर क्लिक करें
  • विकल्प से अटैचमेंट के पास, चयन बटन पर क्लिक करें
  • चयन कोड प्रकार विंडो दिखाई देगी
  • अब विकल्प का चयन करें स्वचालित रूप से डीबग करने के लिए कोड के प्रकार को निर्धारित करें और ठीक बटन पर क्लिक करें।


कोशिश करने के लिए बस कुछ आसान - आप इसे पहले से ही कोशिश कर सकते हैं। समाधान एक्सप्लोरर में समाधान पर राइट क्लिक करें, "क्लीन सॉल्यूशन" पर क्लिक करें , यह समाधान से जुड़े सभी संकलित और अस्थायी फ़ाइलों को हटा देता है

समाधान का पुनर्निर्माण करें और फिर से डीबग करने का प्रयास करें।

मुझे समाधान में कई परियोजनाओं को ब्रेकपॉइंट्स के साथ भी परेशानी हुई है - कुछ x86 के रूप में संकलित हैं, कुछ x64 के रूप में।


जांचें कि आपकी बिन / डीबग फ़ोल्डर में आपकी .pbd फ़ाइल गुम है या नहीं। यदि यह आपके प्रोजेक्ट के "गुण" पर जाता है, तो नीचे "बिल्ड करें" और फिर "उन्नत" चयनित होता है। दिखाई देने वाली नई विंडो में "डीबग जानकारी" के तहत "पूर्ण" चुनें। यह मेरा मुद्दा था और इसे मेरे लिए हल किया।


विंडोज़ के भीतर एक व्यवस्थापक के रूप में दृश्य स्टूडियो चलाने का प्रयास करें।


प्रोजेक्ट गुण (फिर अपनी बिल्ड कॉन्फ़िगरेशन का चयन करें)> टैब बनाएं> उन्नत ...> डीबग जानकारी (ड्रॉपडाउन)

'सभी' या 'pdb-only' पर सेट करें फिर पुनर्निर्माण करें


हमें हमारी समस्या का कारण मिला। यह कोड "CodeFile" विशेषता (ASP.NET 2.0 और उससे परे) की बजाय .aspx फ़ाइल के पृष्ठ निर्देश में "CodeBehind" विशेषता का उपयोग कर रहा था। निराशा के दिनों के बाद, एक साधारण खोज और प्रतिस्थापन समस्या हल हो गई।


मैं वीएस 10 का उपयोग कर एक स्थिर पुस्तकालय के साथ एक सी # अनुप्रयोग को एकीकृत कर रहा था - जिसे मैं नया हूं। मैंने उन्हें इंटरफ़ेस करने के लिए एक प्रबंधित कोड डीएल लिखा था। मैं हर जगह ब्रेकपॉइंट्स सेट कर सकता था लेकिन स्थैतिक lib। मुझे ऊपर वर्णित संदेश मिला - इस दस्तावेज़ के लिए कोई प्रतीक लोड नहीं किया गया है। मैंने ऊपर दिए गए कई सुझावों की कोशिश की। मैं देख सकता था कि प्रतीकों को लोड नहीं किया जा रहा था। अंत में मैंने एक चेक बॉक्स कॉन्फ़िगरेशन डीबग देखा, अप्रबंधित कोड डीबगिंग सक्षम करें। इससे मुझे स्थिर lib कार्यों में ब्रेकपॉइंट्स सेट करने की अनुमति मिली।


कभी-कभी, भले ही यह आपको यह त्रुटि देता है, breakpoint अभी भी हिट हो जाता है, इसलिए केवल त्रुटि को अनदेखा करें। यह अक्सर एक MVC web app के Views में होता है।


उन उत्तरों में से कोई भी मेरी समस्या हल नहीं किया। मैंने इस तथ्य के आधार पर एक और चीज की कोशिश की कि स्टॉप के साथ परियोजना वास्तविक रूप से भारित परियोजना नहीं थी। मैंने पाया कि हंस पासेंट ने लिखा था कि .dll जहां मैं डीबगर और associoated .pdb फ़ाइलों को रोकना चाहता हूं जहां .exe फ़ाइल के पास कॉपी किया गया था। उन फ़ाइलों की पुरानी तारीख है इसलिए मैंने सोचा कि वे रनटाइम में अपडेट नहीं किए गए थे। मैंने मैन्युअल रूप से उन्हें हटा दिया, विजुअल स्टूडियो एक और जोड़ी बना और इस नई जोड़ी को .exe के पास रख दिया। अब ब्रेकपैंक काम करता है!

शायद विजुअल स्टूडियो प्रतिलिपि नहीं कर सकता है और .exe के पास मौजूदा फ़ाइलों (.dll और .pdb) को स्थानांतरित कर सकता है क्योंकि वहां कोई और है। तो अगर मैंने मैन्युअल रूप से हटा दिया तो वीएस .exe के पास नया बना सकता है।

मुझे लगता है कि एक और परिवर्तन (चेक और अन्य - किसी अन्य उत्तरों से) ने कुछ ट्रिगर किया और विजुअल स्टूडियो की प्रतिलिपि बनाई और परियोजना फ़ोल्डर से डीएल और पीडीबी को एक्सई के पास फ़ोल्डर में बदल दिया, ताकि यह एक समाधान हो।

मुझे लगता है कि समस्या का मूल कारण यह है कि विजुअल स्टूडियो रनटाइम में किसी अन्य फ़ाइल का उपयोग करता है, स्टॉप के साथ प्रोजेक्ट की कोई फ़ाइल नहीं।

शायद किसी को मदद करने के लिए यह जवाब!


डीबग / सामान्य सेटिंग्स में "बस मेरा कोड" विकल्प अक्षम करें।


इससे मुझे कुछ अन्य विकल्प ऊपर ले गए और कुछ अजीब कारणों से डीबगिंग ने काम करना बंद कर दिया।

टूल-> विकल्प-> डिबगिंग-> सामान्य -> ​​(अनटिक) "स्रोत फ़ाइलों को मूल संस्करण से सटीक मिलान करने की आवश्यकता है"







breakpoints