vscode-powershell
vscode-powershell copied to clipboard
Not in file Scriptblock debugging create empty temporary file
Prerequisites
- [X] I have written a descriptive issue title.
- [X] I have searched all issues to ensure it has not already been reported.
- [X] I have read the troubleshooting guide.
- [X] I am sure this issue is with the extension itself and does not reproduce in a standalone PowerShell instance.
- [X] I have verified that I am using the latest version of Visual Studio Code and the PowerShell extension.
- [ ] If this is a security issue, I have read the security issue reporting guidance.
Summary
On stable a temporary file is created with the content of the scriptblock and debugged normally. On preview temporary empty file is created.
PowerShell Version
Name Value
---- -----
PSVersion 7.2.2
PSEdition Core
GitCommitId 7.2.2
OS Microsoft Windows 10.0.22000
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
Visual Studio Code Version
1.66.0
e18005f0f1b33c29e81d732535d8c0e47cafb0b5
x64
Extension Version
[email protected]
[email protected]
Steps to Reproduce
$X = {
Set-PSBreakpoint -Variable Foo
$Foo = 0
1
2
3
}.ToString()
. ([Scriptblock]::Create($X))
Visuals
Logs
No response
I noticed this as well while working on something attach to process related. Glad to know it's not something I just broke :)
Lookin' into it, thanks @ili101!
Has this continued to repro?
Yes still broken in preview
Yep it's on my list but I haven't actually done anything to fix it yet.
I was initially thinking it wouldn't be a blocker but this might make debugging pester tests in particular a huge PITA. Assuming Pester still creates anonymous scriptblocks for mocks anyway
From Patrick: The remote file manager is for some reason not populating the file in this scenario, but is creating it.
Easy way to repro: type "Wait-Debugger" in console.
Ok I have a partial answer. Debugging this, in the DebugService
we have this bit of code that should be getting the lines of the script...and it's not:
PSCommand psCommand = new PSCommand().AddScript($"list 1 {int.MaxValue}");
IReadOnlyList<PSObject> scriptListingLines =
await _executionService.ExecutePSCommandAsync<PSObject>(
psCommand, CancellationToken.None).ConfigureAwait(false);
Hence why that temporary file is empty. scriptListingLines
is quite empty!
Sorry this took so long @ili101 but it will be fixed in the next pre-release!