PowerShell 技能连载 - ISE 的缺陷导致调试器阻塞
在 Powershell ISE 中,有一个模糊的缺陷,可能会导致调试器死锁。受影响的 PowerShell 版本有 3.0 和 4.0。
以下是一段测试脚本:
$test = @"
Some lines
of text
"@
$test
在 ISE 编辑器中将这段代码保存为脚本,然后在第一行中设置一个断点:单击第一行的任何地方,然后按下 F9
键。该行将会变成红色。
当您启动脚本时,调试器将会在断点处停下,然后您可以按 F10
键单步跟踪代码。这可以正常工作。
现在,在变量定义之前加入一些空格:
$test = @"
Some lines
of text
"@
$test
当您现在调用调试器的时候,它将会死锁,并且 ISE 不会恢复。您还可以保存未保存的脚本,但您再也无法停止 ISE 的运行空间。
这个缺陷在对通过 here string 定义的脚本变量缩进的时候暴露出来。
PowerShell 技能连载 - ISE 的缺陷导致调试器阻塞