Nếu bạn biên dịch với tối ưu hóa được kích hoạt, thì nhiều biến sẽ bị xóa; ví dụ:
SomeType value = GetValue();
DoSomething(value);
ở đây, biến cục bộ value
thường sẽ bị xóa, thay vào đó giữ giá trị trên ngăn xếp - hơi giống như bạn đã viết:
DoSomething(GetValue());
Ngoài ra, nếu một giá trị trả về hoàn toàn không được sử dụng , thì nó sẽ bị loại bỏ thông qua "pop" (thay vì được lưu trữ trong một địa phương thông qua "stloc", và một lần nữa; địa phương sẽ không tồn tại).
Do đó, trong bản dựng như vậy, trình gỡ lỗi không thể nhận được giá trị hiện tại value
vì nó không tồn tại - nó chỉ tồn tại trong thời gian ngắn giữa GetValue()
và DoSomething(...)
.
Vì thế; nếu bạn muốn gỡ lỗi ... đừng sử dụng bản phát hành! hoặc ít nhất, vô hiệu hóa tối ưu hóa trong khi bạn gỡ lỗi.
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