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




visual-studio debugging (24)

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

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


सबसे पहले मैंने कमांड लाइन से कोशिश की;

कमांड लाइन से अस्थायी फ़ाइलों को हटाने से काम किया गया।

सी: \ विंडोज \ माइक्रोसॉफ्ट.NET \ Framework64 \ v4.0.30319 \ अस्थायी एएसपी.नेट फ़ाइलें> rd / s रूट

जब मैं टूल्स -> विकल्प -> डिबगिंग -> सामान्य में "बस मेरा कोड सक्षम करें" विकल्प अक्षम करता हूं

समस्या मेरे लिए हल हो गई। यह एक डब्ल्यूसीएफ एप्लीकेशन है, एशक्स पेज डीबग करने का प्रयास कर रहा था। http://blogs.msdn.com/b/zainnab/archive/2010/10/25/understanding-just-my-code.aspx


परियोजना में मौजूदा फाइलों को जोड़ने के बाद यह विजुअल स्टूडियो 2017 पर खुश हुआ। यह मेरे लिए काम किया:

  1. समाधान बंद करो,
  2. SolutionFolder\.vs\SolutionName\v15\sqlite3 और storage.ide हटाएं
  3. समाधान फिर से खोलें

ऐसा तब होता है जब एक सी ++ प्रोजेक्ट डिबग करना जो मॉड्यूल को लोड करता है जिसे कुछ सीआरएल भाषा (प्रबंधित सी ++, सी # आदि) के साथ कार्यान्वित किया गया है। इस स्थिति में त्रुटि संदेश वास्तव में भ्रामक है।

समाधान स्टार्टअप प्रोजेक्ट में सामान्य भाषा रनटाइम (सीएलआर) समर्थन कॉन्फ़िगरेशन प्रॉपर्टी डालना और उसे पुन: संकलित करना है।


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

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

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


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


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

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

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

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

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

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


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

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


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


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

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


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


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

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


यदि आपके समाधान में एक से अधिक परियोजनाएं हैं , तो सुनिश्चित करें कि सही प्रोजेक्ट StartUp Project रूप में सेट है। अपने समाधान के स्टार्टअप प्रोजेक्ट के रूप में एक विशेष प्रोजेक्ट सेट करने के लिए, प्रोजेक्ट पर राइट-क्लिक करें, Set As StartUp Project चुनें।

मेरे स्टार्टअप प्रोजेक्ट को सही तरीके से सेट करने के बाद, वांछित ब्रेक-पॉइंट थ्रेड द्वारा पहुंचा था।


रिलीज के बजाय समाधान कॉन्फ़िगरेशन में डीबग का चयन करें


मेरे लिए समाधान परियोजना गुणों की Advanced Build Settings में छिपा हुआ था:

किसी अज्ञात कारण के लिए इसे none सेट none किया गया था: ब्रेकपॉइंट्स को हिट करने के कारण इसे full से सेट करना।

इस संवाद को प्राप्त करने के लिए, प्रोजेक्ट गुणों को खोलें, फिर Build , फिर पृष्ठ के निचले हिस्से में Advanced... बटन का चयन करें।


यह तब हो सकता है जब डीबगिंग या डीबग सत्र के दौरान सिस्टम समय बदलता है, प्रोग्रामिंग रूप से, मैन्युअल रूप से या बाहरी प्रोग्राम द्वारा।


मेरे मामले में, मैं वीएस 2012 में एक चल रही प्रक्रिया से जुड़ा था। संलग्न करते समय, आपको विभिन्न मोड (मूल, स्क्रिप्ट, चांदी की रोशनी, प्रबंधित 2.0, प्रबंधित 4.0, आदि) में डीबग करने का विकल्प दिया जाता है। डिफ़ॉल्ट रूप से, डीबगर स्वचालित रूप से मोड का चयन करता है। हालांकि स्वचालित हमेशा सही विकल्प नहीं बनाता है। यदि आपकी प्रक्रिया में कई प्रकार के कोड हैं, तो सुनिश्चित करें कि डीबगर सही का उपयोग कर रहा है।


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

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


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

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


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

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

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

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

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

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

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

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

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


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

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

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

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


के लिए जाओ

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

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


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

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


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







debugging