python pdb.set_trace()的powershell中是否存在等价物?
我希望能够在特定行停止执行脚本,然后跳转到调试器交互式控制台。 (我不想使用ISE)
我已经看到有一个Set-PSBreakpoint,但是那个需要指定脚本和行。
答案 0 :(得分:3)
我最喜欢的是
$Host.EnterNestedPrompt()
只是一行。您的脚本将停在那里,您将获得一个shell,您可以在其中检查变量等。完成后,您只需退出嵌套的shell并继续执行。我曾经有时会把这些陈述留在身边,所以现在我总是这样:
######## DEBUG ##########
$Host.EnterNestedPrompt()
######## END DEBUG ##########
所以当我完成它们时,我可以轻松找到(并删除)它们。
答案 1 :(得分: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的建议。 :)