আপনি যদি সক্ষম অপ্টিমাইজেশানগুলি দিয়ে সংকলন করেন, তবে অনেকগুলি ভেরিয়েবল অপসারণ করা হবে; উদাহরণ স্বরূপ:
SomeType value = GetValue();
DoSomething(value);
এখানে স্থানীয় পরিবর্তনশীল value
সাধারণত মুছে ফেলা হবে, পরিবর্তে স্ট্যাকের উপর রাখা - কিছুটা যেমন আপনি লিখেছেন:
DoSomething(GetValue());
এছাড়াও, যদি কোনও রিটার্ন মান একেবারেই ব্যবহার না করা হয় , তবে এটি "পপ" এর মাধ্যমে ফেলে দেওয়া হবে ("স্টলোক" এর মাধ্যমে কোনও স্থানীয় সংরক্ষণের পরিবর্তে এবং আবার; স্থানীয়টির অস্তিত্ব থাকবে না)।
এই কারণে, এই ধরনের একটি Build এ ডিবাগার বর্তমান মূল্য পেতে পারে না 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