.net - "ब्रेकपॉइंट वर्तमान में हिट नहीं होगा। स्रोत कोड मूल संस्करण से अलग है। "इसका क्या अर्थ है?




visual-studio debugging (20)

इस समस्या को पाने का एक नया तरीका विजुअल स्टूडियो 2017 15.3.1 के माध्यम से 15.3.5 के रूप में दिखाई दिया है। यदि आप EditorConfig का उपयोग कर रहे हैं, तो charset=utf8 विकल्प इन लक्षणों का कारण बनता है। वीएस टीम ने इसे पुन: उत्पन्न किया है और कहता है कि वे इस पर काम कर रहे हैं

तो एक फिक्स है .editorconfig फ़ाइल में अपनी charset=utf8 लाइन को टिप्पणी करना।

संपादित करें: इसे वीएस 15.5 के रूप में तय किया जाना चाहिए।

विजुअल स्टूडियो में डिबगिंग करते समय, कभी-कभी मैं ब्रेकपॉइंट जोड़ता हूं लेकिन यह खोखला है और वीएस कहता है "ब्रेकपॉइंट वर्तमान में हिट नहीं होगा। स्रोत कोड मूल संस्करण से अलग है।" जाहिर है यह मुझे डीबग करने में सक्षम होने से रोकता है।

संदेश पर पृथ्वी का क्या अर्थ है? क्या मूल संस्करण? अगर मैंने अभी समाधान खोला है और कोड में कोई भी बदलाव नहीं किया है, तो 'मूल संस्करण' कैसे हो सकता है?


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

  • समाधान खोजी
    • समाधान पर राइट-क्लिक करें
      • गुण
        • सामान्य गुण
          • डीबग स्रोत फ़ाइलें
            • "इन स्रोत फ़ाइलों को न देखें"।

किसी कारण से मुझे अज्ञात, वीएस 2013 ने वहां एक स्रोत फ़ाइल डालने का फैसला किया, और बाद में, मैं उस फ़ाइल में ब्रेकपॉइंट नहीं मार सका। यह "स्रोत कोड मूल संस्करण से अलग" के लिए अपराधी हो सकता है।


के लिए जाओ

  • उपकरण
    • विकल्प
      • डिबगिंग
        • सामान्य

मूल संस्करण से बिल्कुल मेल खाने के लिए स्रोत फ़ाइलों को अनचेक करें


क्या आपने कभी ऐसा किया है?

क्या आप अंतिम सफल निर्माण जारी रखना और चलाने के लिए चाहते हैं?

यदि आपने बॉक्स को चुना है और "हां" दबाया है तो आपको अंतिम सफल निर्माण मिल जाएगा, भले ही आपकी परियोजना संकलित न हो। इसका मतलब यह है कि जब भी आप ब्रेकपॉइंट सेट करते हैं, तो आपको वह त्रुटि मिल जाएगी।

इस मान को बदलने का प्रयास करें:

  • उपकरण
    • विकल्प
      • परियोजनाएं और समाधान
        • बिल्ड और रन करें
          • रन पर, जब निर्माण या तैनाती त्रुटियां होती हैं: लॉन्च न करें

जैसा कि यह कहता है, "स्रोत कोड मूल संस्करण से अलग है"।

समाधान एक्सप्लोरर के अंदर प्रोजेक्ट फ़ोल्डर पर राइट क्लिक करें और Clean को चुनें। परियोजना का एक नया संस्करण बनाएं और ब्रेकपॉइंट फिर से काम करेगा!


डीबग मोड लॉन्च करने से पहले इसे करने के बजाय डीबग मोड में चलते समय ब्रेकपॉइंट को अक्षम और पुनः सेट करने का प्रयास करें।


मुझे यह भी सामना करना पड़ा। मेरी समस्या का कारण बनने वाली स्थितियां:

  • मैं स्थानीय रूप से एक पूर्ण आईआईएस 7 उदाहरण चला रहा हूं
  • मैं अलग-अलग परियोजनाओं में अपने सॉफ्टवेयर का संस्करण बना रहा हूं

मैंने पिछले संस्करण को खोलकर इसका कारण बना दिया था (वीएस ने यह पूछने के लिए कहा कि क्या मैं आईआईएस डीबगिंग में इस उदाहरण को इंगित करना चाहता हूं, मैंने 'हां' का उत्तर दिया), फिर वर्तमान संस्करण खोलना (फिर से 'आईआईएस' के साथ आईआईएस प्रॉम्प्ट का जवाब देना ), फिर पिछले संस्करण में डीबग करने का प्रयास कर रहा है।

हल करने के लिए, मैंने केवल पिछले और इच्छित संस्करण को बंद कर दिया और फिर से खोला, एक बार फिर इसे डिबगिंग स्रोत के रूप में प्रस्तुत किया।


मेरे मामले में, मैं एक विंडोज सीई ऐप विकसित कर रहा था, जो एक एमुलेटर के खिलाफ परीक्षण किया गया था। समस्या यह थी कि निष्पादन योग्य को एमुलेटर पर तैनात नहीं किया गया था, इसलिए .pdb (विकास पर्यावरण में) .exe (एमुलेटर में) के साथ सिंक्रनाइज़ नहीं था, क्योंकि नया .exe कभी भी एमुलेटर में कॉपी नहीं किया गया था। मुझे एक नई तैनाती को मजबूर करने के लिए एम्यूलेटर में .exe को हटाना पड़ा। फिर यह काम किया।


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


मेरे लिए यह एक वेबसाईट परियोजना पर काम करते समय था। इन अस्थायी फ़ोल्डरों को साफ करने के बाद मुझे उचित कंपाइलर त्रुटियां वापस मिलीं:

  • C:\Documents and Settings\%username%\AppData\Local\Temp\Temporary ASP.NET Files
  • C:\windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

आखिरकार मैंने समस्या का समाधान किया जब मैंने पाया कि एक क्लास फ़ाइल जिसे मैं जानबूझकर सबफ़ोल्डर में ले गया था, किसी भी तरह रूट फ़ोल्डर में फिर से दिखाई दिया। वीएस उस का उपयोग कर रहा था जबकि मैं दूसरे को संपादित कर रहा था।


मेरे लिए, किसी भी आइटम ने इस मुद्दे को हल नहीं किया। मैंने अभी उस फ़ंक्शन के अंदर कोड की एक नई पंक्ति जोड़ा है, जैसे कुछ:

int a=0;

इसे जोड़कर, मुझे लगता है कि मैंने इस फ़ंक्शन को मूल संस्करण में जोड़ने के लिए दृश्य स्टूडियो को ट्रिगर किया


मैंने इसे बनाम 2007 के 32 बिट बिल्ड में अनुभव किया।

वास्तव में मेरे लिए कोई भी समाधान काम नहीं करता है। मैंने फिर से शुरू किया, मैंने आईडीई फाइलों को साफ़ किया, स्वच्छ निर्मित समाधान, गिट रेपो से खींचा और समाधान का कोई फायदा नहीं हुआ।

मैं nuget से 64 बिट निर्भरता में खींच रहा था और जैसे ही मैंने असेंबली का उपयोग किया, स्रोतों को अंतिम निष्पादन योग्य में बनाया नहीं जा रहा था और इसके बजाय आईडीई कैश किए गए स्रोत बनाए जा रहे थे।

मैंने nuget कॉन्फ़िगरेशन को हटा दिया, संदर्भित असेंबली को हटा दिया, स्रोत डाउनलोड किया, मैन्युअल रूप से लॉग 4नेट बनाया, इसे हस्ताक्षरित किया, इसे मेरे प्रोजेक्ट में एक फ़ोल्डर में जोड़ा, इसमें संदर्भ जोड़ा, और मैं फिर से डीबग करने में सक्षम था।

यह एक दर्द था, मुझे उम्मीद है कि यह देखने के लिए उत्तर सूची में उठ जाएगा।

संपादित करें: आईडीई सेटिंग्स में "बिल्ड त्रुटि पर संकेत" चालू होने के बावजूद निर्माण के दौरान कोई त्रुटि नहीं थी।


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


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


यह देखने के लिए जांचें कि क्या आपके पास समाधान में उस नाम के साथ एक से अधिक फ़ाइल हैं।

मेरे पास यह एक परियोजना पर था जिसे मैंने किसी और से लिया था। ब्रेकपॉइंट सूची Controller.cs में लाइन संख्याओं से भरा था, कुछ सक्रिय और कुछ नहीं। मुझे यह सवाल मिला, और कुछ विकल्पों की कोशिश की, लेकिन जब मैंने ब्रेकपॉइंट्स पर डबल-क्लिक किया, तो उन्होंने मुझे समाधान के भीतर विभिन्न परियोजनाओं में ले लिया। क्योंकि फ़ाइलों को वही कहा जाता था, वे समान होते हैं, लेकिन वे नहीं होते हैं। उत्तर निश्चित रूप से चेतावनी को अनदेखा करने के लिए है, क्योंकि यदि आप उस अन्य फ़ाइल को लोड करते हैं तो वे सक्रिय हो जाएंगे।


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


विजुअल स्टूडियो बंद करना और समाधान को फिर से खोलना समस्या को ठीक कर सकता है, यानी यह आईडीई के भीतर एक बग है (मैं वीएस -2010 चला रहा हूं)।

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


वीएस में "आउटपुट" विंडो पर ध्यान दें। यह आपको बताएगा कि असेंबली क्या लोड की जाती है और कब। आप देख सकते हैं कि फ़ोल्डर में कहीं भी आपकी असेंबली का पुराना संस्करण लोड हो रहा है।

उदाहरण के लिए यदि आपके पास एकाधिक असेंबली हैं और आप वर्तमान में समर्थन असेंबली में से किसी एक को तोड़ने की कोशिश कर रहे हैं, तो सीएलआर असेंबली संकल्प को संभालेगा, जो कि परियोजना में संदर्भित किसी अन्य असेंबली फ़ाइल को लोड कर सकता है।


समस्या यह है कि आपकी डीबग जानकारी आपकी असेंबली के साथ समन्वयित नहीं है। समाधान सरल है:

  1. अपने बिन फ़ोल्डर पर जाएं
  2. .pdb फ़ाइलों को हटाएं
  3. फिर से बनाना

चाल चलाना चाहिए!

(अजीब बात यह है कि .pdb फ़ाइलों को फेंकने के बिना पुनर्निर्माण हमेशा काम नहीं करता है। मैं संशोधित दिनांक को अपडेट किया जा सकता हूं, लेकिन अभी भी चेन (VS2013 डीबगर, आईआईएस, असेंबली कैश) में कहीं भी यह परिवर्तन नहीं मिला है )


यदि आपने डीबग बिल्ड कॉन्फ़िगरेशन में डीएलएल प्रोजेक्ट को अनचेक किया है , तो आपका नया कोड कभी नहीं बनाया जाएगा!

Build --> Configuration Manager ... (VS2010 में) पर जाएं और जांचें कि जिस कोड को आप डीबग करने का प्रयास कर रहे हैं उसके साथ प्रोजेक्ट वर्तमान बिल्ड कॉन्फ़िगरेशन के लिए चेक किया गया है।





debugging