diff --git a/src/PowerShellEditorServices/Services/DebugAdapter/DebugService.cs b/src/PowerShellEditorServices/Services/DebugAdapter/DebugService.cs index 667a26bdd5..54ff62633b 100644 --- a/src/PowerShellEditorServices/Services/DebugAdapter/DebugService.cs +++ b/src/PowerShellEditorServices/Services/DebugAdapter/DebugService.cs @@ -481,6 +481,10 @@ public async Task SetVariableAsync(int variableContainerReferenceId, str // This makes the returned string consistent with the strings normally displayed for variables in the debugger. VariableDetails tempVariable = new(psVariable); _logger.LogTrace($"Set variable '{name}' to: {tempVariable.ValueString ?? ""}"); + + // Fetch stack frames and variables again to have actual data in the variables field. + // Without this, GetVariables and other methods that use the variables field will use old data. + await FetchStackFramesAndVariablesAsync(null).ConfigureAwait(false); return tempVariable.ValueString; } @@ -508,6 +512,10 @@ public async Task EvaluateExpressionAsync( command, cancellationToken, new PowerShellExecutionOptions { WriteOutputToHost = writeResultAsOutput, ThrowOnError = !writeResultAsOutput }).ConfigureAwait(false); + + // Fetch stack frames and variables again to have actual data in the variables field. + // Without this, GetVariables and other methods that use the variables field will use old data. + await FetchStackFramesAndVariablesAsync(null).ConfigureAwait(false); } catch (Exception e) {