顯示目前的呼叫堆疊。

語法

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),它會結束偵錯工具並繼續執行完指令碼。






請參閱




目錄