আপনি যদি সক্ষম অপ্টিমাইজেশানগুলি দিয়ে সংকলন করেন, তবে অনেকগুলি ভেরিয়েবল অপসারণ করা হবে; উদাহরণ স্বরূপ:
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