在PowerShell中使用pdb.set_trace()进入调试交互控制台
在PowerShell中有没有类似于Python的pdb.set_trace()的功能?
我想在脚本的某一行停止执行,然后进入调试器的交互式控制台。(我更希望不使用ISE)
我看到有一个Set-PSBreakpoint的命令,但这个命令需要指定脚本和行号。
2 个回答
1
好的,在PowerShell中,跟Python里的pdb.set_trace()相对应的命令是:
function Set-Trace {
Set-PSBreakPoint -Line ($MyInvocation.ScriptLineNumber + 1) -Script $MyInvocation.ScriptName
}
不过,不像Python那样,在PowerShell中,一旦你安装了这个跟踪功能,它会一直存在,直到你结束你的PowerShell会话。所以我建议你在脚本的开头加上这个命令,以便清除旧的跟踪记录:
function Remove-AllTraces {
Get-PSBreakpoint | Remove-PSBreakpoint
}
非常感谢@Richard的建议。:)
4
我最喜欢的是
$Host.EnterNestedPrompt()
就这一行代码。你的脚本会在这里暂停,然后你会进入一个命令行界面,可以查看变量等内容。当你完成后,只需退出这个命令行,脚本就会继续执行。我以前有时候会把这些代码留在那儿,所以现在我总是:
######## DEBUG ##########
$Host.EnterNestedPrompt()
######## END DEBUG ##########
这样我就能在完成后轻松找到(并删除)它们。