PowerShell 技能连载 - 条件断点

适用于 PowerShell 3.0 及以上版本

PowerShell ISE 只支持行断点:它们的作用是当调试器命中指定的行时,使代码暂停执行。您可以在 PowerShell ISE 中按 F9 来切换行断点。只需要保证脚本已经保存。未保存的脚本(“无标题”)中的断点是无效的。

一个更复杂的做法是使用动态(或称为“条件”)断点。它们并不是关联于某一行上而是和某一种情况有关联。

要在某个变量被赋予一个新值的时候使脚本停下来,请使用这段示例代码(请先保存后执行):

$bp = Set-PSBreakpoint -Variable a -Mode Write -Script $psise.CurrentFile.FullPath

$a = 1
$a

$a

$a = 200
$a

Remove-PSBreakpoint -Breakpoint $bp

当您运行它时,PowerShell 调试器将会在 $a 被赋予一个新值的时候暂停脚本执行。

您甚至可以为它绑定一个更复杂的条件。这个例子将只会在对 $a 赋予一个大于 100 的整数值时才使脚本暂停。

$Condition = { if ($a -is [Int] -and $a -gt 100) { break }  }
$bp = Set-PSBreakpoint -Variable a -Mode Write -Script $psise.CurrentFile.FullPath -Action $Condition

$a = 1
$a

$a

$a = 200
$a

Remove-PSBreakpoint -Breakpoint $bp

本文国际来源:Conditional Breakpoints

评论