2013-02-20 69 views
1

在python pdb.set_trace()的powershell中是否存在等价物?pdb.set_trace()for powershell跳入调试器交互式控制台

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

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

+2

使用'Set-PSBreakPoint'和'$ MyInvocation'来设置当前脚本下一行的断点? (稍加注意并获得外部作用域的'$ MyInvocation',这可以在帮助程序中完成。) – Richard 2013-02-20 10:52:07

回答

1

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

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

不过,与蟒蛇,在PowerShell中一旦你安装了跟踪它会永远存在,直到你杀死你PowerShell会话。我建议在脚本的开头添加以删除旧痕迹:

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

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

3

我最喜欢的是

$Host.EnterNestedPrompt() 

只是一条线。你的脚本将停在那里,你将得到一个shell,你可以检查变量等。当你完成后,你只需退出你的嵌套shell并继续执行。我以前有时会离开这些语句躺在身边,虽然,所以现在我总是:

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

所以我可以很容易地找到(和删除)他们当我要和他们一起做。

+0

哇。这是一种生活救星。我是如何在没有它的情况下生活的? – iTayb 2017-06-15 08:07:08