यदि आप सक्षम किए गए अनुकूलन के साथ संकलन करते हैं, तो कई चर हटा दिए जाएंगे; उदाहरण के लिए:
SomeType value = GetValue();
DoSomething(value);
यहाँ स्थानीय चर value
को आम तौर पर हटा दिया जाएगा, इसके बजाय स्टैक पर मान रखते हुए - थोड़ा सा जैसे कि आपने लिखा था:
DoSomething(GetValue());
इसके अलावा, यदि कोई वापसी मान का उपयोग नहीं किया जाता है , तो इसे "पॉप" के माध्यम से गिरा दिया जाएगा (बजाय "स्टालोक" के माध्यम से एक स्थानीय में संग्रहीत किया जाता है, और फिर से, स्थानीय मौजूद नहीं होगा)।
इस वजह से, इस तरह के एक निर्माण में डिबगर को वर्तमान मूल्य नहीं मिल सकता है value
क्योंकि यह मौजूद नहीं है - यह केवल GetValue()
और उसके बीच के संक्षिप्त समय के लिए मौजूद है DoSomething(...)
।
इसलिए; यदि आप डिबग करना चाहते हैं ... एक रिलीज बिल्ड का उपयोग न करें! या कम से कम, डिबग करते समय अनुकूलन को अक्षम करें।
Cannot obtain value of local or argument '<this>' as it is not available at this instruction pointer, possibly because it has been optimized away. System.Threading.Tasks.TaskExceptionHolder