2013-02-20 66 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