Get-PSCallStack
顯示目前的呼叫堆疊。
語法
Get-PSCallStack [<CommonParameters>]
描述
Get-PSCallStack Cmdlet 會顯示目前的呼叫堆疊。
儘管此 Cmdlet 是設計用於 Windows PowerShell 偵錯工具,您還是可以用它來在偵錯工具以外顯示指令碼或函數中的呼叫堆疊。
若要在偵錯工具中執行 Get-PSCallStack 命令,請輸入 "k" 或 "get-pscallstack"。
參數
<CommonParameters>
這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.
輸入和輸出
輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。
輸入 |
無 您無法經由管道將物件輸出至這個 Cmdlet。 |
輸出 |
System.Management.Automation.CallStackFrame Get-PSCallStack 會傳回代表呼叫堆疊內之項目的物件。 |
範例 1
C:\PS>function my-alias {
$p = $args[0]
get-alias | where {$_.definition -like "*$p"} | ft definition, name -auto
}
PS C:\ps-test> set-psbreakpoint -command my-alias
Command : my-alias
Action :
Enabled : True
HitCount : 0
Id : 0
Script : prompt
PS C:\ps-test> my-alias get-content
Entering debug mode. Use h or ? for help.
Hit Command breakpoint on 'prompt:my-alias'
my-alias get-content
[DBG]: PS C:\ps-test> s
$p = $args[0]
DEBUG: Stepped to ': $p = $args[0] '
[DBG]: PS C:\ps-test> s
get-alias | Where {$_.Definition -like "*$p*"} | ft Definition,
[DBG]: PS C:\ps-test>get-pscallstack
Name CommandLineParameters UnboundArguments Location
---- --------------------- ---------------- --------
prompt {} {} prompt
my-alias {} {get-content} prompt
prompt {} {} prompt
[DBG]: PS C:\ps-test> o
Definition Name
---------- ----
Get-Content gc
Get-Content cat
Get-Content type
描述
-----------
這個命令會使用 Get-PSCallStack Cmdlet 顯示 My-Alias 函數的呼叫堆疊,而這個簡單函數可以取得 Cmdlet 名稱的別名。
第一個命令是在 Windows PowerShell 命令提示字元下輸入該函數。第二個命令會使用 Set-PSBreakpoint Cmdlet 在 My-Alias 函數上設定中斷點。第三個命令會使用 My-Alias 函數,以便為 Get-Content Cmdlet 取得目前工作階段中的所有別名。
在呼叫該函數時,偵錯工具會進入命令列。兩個連續的逐步執行命令會開始逐行執行該函數。然後,Get-PSCallStack 會被用來擷取呼叫堆疊。
最後一個命令是 Step-Out 命令 (o),它會結束偵錯工具並繼續執行完指令碼。
請參閱
概念
about_Debuggers
Set-PSBreakpoint
Get-PSBreakpoint
Enable-PSBreakpoint
Disable-PSBreakpoint
Remove-PSBreakpoint