从终端调试Visual Studio代码PowerShell代码
我已在代码窗口中打开PowerShell脚本。我正在从终端启动相同的脚本,并希望它在调试模式下运行。这意味着:脚本将在断点处停止 所描述的行为类似于PowerShell ISE。 但是,它运行整个脚本时不会在断点处停止从终端调试Visual Studio代码PowerShell代码,powershell,debugging,visual-studio-code,Powershell,Debugging,Visual Studio Code,我已在代码窗口中打开PowerShell脚本。我正在从终端启动相同的脚本,并希望它在调试模式下运行。这意味着:脚本将在断点处停止 所描述的行为类似于PowerShell ISE。 但是,它运行整个脚本时不会在断点处停止 从终端启动时,是否有方法实现脚本调试?执行PowerShell控制台时,可以使用下面的此命令在脚本中的给定代码行设置断点,然后指定脚本。当脚本运行时,它将在您请求的给定点中断 Set-PSBreakpoint -Line 9 -Script C:\temp\test_scrip
从终端启动时,是否有方法实现脚本调试?执行PowerShell控制台时,可以使用下面的此命令在脚本中的给定代码行设置断点,然后指定脚本。当脚本运行时,它将在您请求的给定点中断
Set-PSBreakpoint -Line 9 -Script C:\temp\test_script.ps1
不幸的是,从的v2019.5.0起,不支持通过外部控制台窗口进行调试。 支持此方案的长期功能请求已提出,但尚未实施-我建议您在那里投票支持该方案。
更新:我似乎是这样 变通办法,自2019.5.0版起: 在Windows上,仅使用外部PowerShell Core控制台:
- 打开脚本所在的文件夹进行编辑,而不仅仅是脚本文件本身
- 切换到调试视图(视图>调试)
- 如果左上角的下拉列表显示
,请单击其右侧的齿轮图标:无配置
- 如果提示输入环境,请选择
PowerShell
- 将在文件夹中创建一个
文件,其中包含调试启动配置,这些配置位于“调试”视图下拉列表中提供的选项之下.vscode/launch.json
- 如果提示输入环境,请选择
- 在下拉列表中选择PowerShell连接到主机进程
- 按F5(调试>开始调试)
- 系统将提示您指定要附加到的目标进程:选择要附加到的PowerShell核心会话;所有此类会话都以
作为前缀,并显示其控制台窗口标题以及PID(进程ID);如有疑问,请在目标控制台窗口中执行pwsh
,以确定其PID$PID
- 选择运行空间1作为目标运行空间(即使它说的是
)Busy
- 注意:您可以通过在
中将运行空间1的使用硬编码到您的启动配置中来跳过这一步:在定义配置的json对象中添加以下行.vscode/launch.json
:“PowerShell连接到主机进程”
“runspaceId”:1
- 注意:您可以通过在
- 切换到外部PowerShell Core控制台并调用要调试的脚本
- 在会话中的第一次,调试器将立即中断,即在
函数的末尾PSConsoleHostReadLine
- 从那里开始单步执行脚本,或者只需按F5(调试>继续)继续执行,直到命中以前设置的断点
- 在会话中的第一次,调试器将立即中断,即在
- 要停止调试,请使用Shift+F5(调试>停止调试)或按调试工具栏上的断开图标(显示红色插头)
使用Windows PowerShell/在其他平台上当前功能最接近的方法是通过调试启动配置
PowerShell交互式会话
使用集成终端
注意:macOS和Linux上的PowerShell Core应支持上述针对Windows的调试技术,但这在我的macOS 10.14.6机器上不适用,该机器带有PowerShell Core 7.0.0-preview。2;YMMV
这些限制是:
- PSReadLine功能将不可用-尤其是不使用向上箭头键调用命令
- 集成终端与编辑器窗口共享VisualStudio代码窗口,因此您不能将终端弹出到可以放置在单独显示器上的单独窗口