1

python pdb.set_trace()的powershell中是否有等价物?

我希望能够在特定行停止执行脚本,然后跳转到调试器交互式控制台。(我宁愿不必使用 ISE)

我已经看到有一个 Set-PSBreakpoint,但需要指定脚本和行。

4

2 回答 2

4

我最喜欢的是

$Host.EnterNestedPrompt()

就一行。您的脚本将停在那里,您将获得一个外壳,您可以在其中检查变量等。完成后,您只需退出嵌套外壳并继续执行。不过,我以前有时会把这些陈述留在身边,所以现在我总是:

######## DEBUG ##########
$Host.EnterNestedPrompt()
######## END DEBUG ##########

所以当我完成它们时,我可以很容易地找到(并删除)它们。

于 2013-04-10T14:44:16.590 回答
1

好的,所以 python 的 pdb.set_trace() 在 powershell 中的等价物是:

function Set-Trace {
  Set-PSBreakPoint -Line ($MyInvocation.ScriptLineNumber + 1) -Script $MyInvocation.ScriptName
}

但是,与 python 不同,在 powershell 中,一旦您安装了跟踪,它将永远存在,直到您终止您的 powershell 会话。我建议将此添加到脚本的开头以删除旧痕迹:

function Remove-AllTraces {
  Get-PSBreakpoint | Remove-PSBreakpoint
}

非常感谢@Richard 的建议。:)

于 2013-02-20T11:24:21.480 回答