2012-11-22 16 views
17

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

public float Value 
    { 
     get 
     { 
      float result = Memory.ReadFloat(Address); 

      double Radian = Math.Round(result, 2); // **BREAK POINT HERE** 
      double Degree = Math.Round(Math.Round((double)(result * 180/Math.PI)), 2); // **BREAK POINT HERE** 

      return result; // **BREAK POINT HERE** 
     } 
    } 

मैं सभी तीन बिंदुओं को तोड़ता हूं, लेकिन मुझे मूल्य दिखाने के लिए मुझे विजुअल स्टूडियो 2012 नहीं मिल रहा है। केवल परिणाम स्थानीय खिड़की पर दिखाई देंगे, रेडियन या डिग्री नामक कोई चर नहीं है।

मैं उदाहरण के लिए रेडियन चर के लिए एक घड़ी जोड़ दें, तो मैं एक लाल क्रॉस चिह्न के साथ यह संदेश प्राप्त:

रेडियन - नाम 'रेडियन' वर्तमान संदर्भ में मौजूद नहीं है

उत्तर

52

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

यदि नहीं, तो आप ऑप्टिमाइज़ेशन अक्षम करने और ट्रैकिंग जानकारी उत्पन्न करने के लिए जेआईटी कंपाइलर को कॉन्फ़िगर कर सकते हैं - here on how to set the configuration देखें। जब आप प्रक्रिया में डीबगर संलग्न करते हैं तो आपको स्थानीय चर को देखने की अनुमति देनी चाहिए।

+2

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

+6

मैंने अपने कॉन्फ़िगरेशन प्रबंधक को रिलीज से डीबग में बदल दिया और अब यह काम करता है – riaandelange

19

मैं VS2012 में एक और परिदृश्य है कि "गायब" करते हुए डिबग मोड में चर का कारण बनता है का सामना करना पड़ा है:

if(false) 
    { 
    . 
    } 
else 
    { 
    //Code here will be optimized and variables will not be available. 
    } 
+0

कृपया, इस http://stackoverflow.com/about को पढ़ने का प्रयास करें, यहां प्रश्न/उत्तर के बारे में अधिक समझ प्राप्त करने के लिए इसलिए। आपका योगदान प्रश्न का उत्तर नहीं दे रहा है। यह एक और टिप्पणी है, जिसे आप अपनी प्रतिष्ठा बढ़ाने के बाद जोड़ सकते हैं: http://stackoverflow.com/faq#reputation –

+9

@ RadimKöhler, आप गलत हैं। यहां दिए गए उत्तर ने मेरा दिन बचाया, मैं इस समस्या को हल करने के लिए पागल था और यह उस तरह के सिमुलेशन को हल करता है। मैंने लंबे समय से चलने वाले ब्लॉक से बचने और किसी अन्य बिंदु का परीक्षण करने के लिए मेरे कोड में एक (गलत) जोड़ा है, मेरी गलती इशैल –

+5

@DiegoMendes द्वारा वर्णित जैसा ही है, अगर इससे आपको मदद मिली, तो ** मैं गलत था! ** यह देखने के लिए बहुत अच्छा है ... –

6

आप डिबग करने की कोशिश कर रहे हैं, तो:

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

+0

मेरे साथ क्या हुआ था कि डीबग के तहत सभी परियोजनाओं को रिलीज़ करने के लिए सेट किया गया था, इसलिए सभी कोड अनुकूलित किए गए थे ... जब तक मैंने आपका जवाब नहीं देखा तब तक मुझे इसका एहसास नहीं हुआ और यह हाल ही में मेरे कई प्रश्नों को साफ़ करता है :) – Asken

0

मैंने अपना समाधान कॉन्फ़िगरेशन डीबग (कोई भी CPU) में बदल दिया लेकिन यह समस्या नहीं थी। विजुअल स्टूडियो 2017 में अपग्रेड करने के बाद मैंने सोचा कि मैं डीबग में था लेकिन एक और आसान (लेकिन महत्वपूर्ण) कदम था। (और यह शायद सबसे अधिक स्पष्ट है, लेकिन मुझे यह याद आया।) जहां "समाधान कॉन्फ़िगरेशन" को "डीबग" पर सेट किया गया है, मुझे भी "डीबग" के बगल में नीचे तीर पर क्लिक करना होगा और "कॉन्फ़िगरेशन प्रबंधक ..." चुनें और फिर उस संबंधित में पॉपअप विंडो "कॉन्फ़िगरेशन" अभी भी "रिलीज़" पर सेट है - मुझे इसे "डीबग" में बदलना था और "बंद करें" बटन पर क्लिक करना था। वहां से घुसपैठ करने से मुझे डिबगिंग के दौरान सभी चर देखने की अनुमति मिली।