用于powershell的pdb.set_trace()跳转到调试器交互式控制台

时间:2013-02-20 10:36:34

标签: python powershell

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

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

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

2 个答案:

答案 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的建议。 :)