Если вы скомпилируете с включенными оптимизациями, многие переменные будут удалены;например:
SomeType value = GetValue();
DoSomething(value);
здесь локальная переменная value
обычно удаляется, вместо этого сохраняя значение в стеке - как если бы вы написали:
DoSomething(GetValue());
Кроме того, если возвращаемое значение вообще не используется , то оно будет отброшено с помощью «pop» (а не сохранено в локальном через «stloc», и снова; локальное не будет существовать).
Из-за этого в такой сборке отладчик не может получить текущее значение value
, потому что он не существует - он существует только в течение короткого момента между GetValue()
и DoSomething(...)
.
Итак;если вы хотите отладить ... не используйте сборку релиза!или, по крайней мере, отключите оптимизацию во время отладки.