當前位置:編程學習大全網 - 編程語言 - 如何在 Windows PowerShell ISE 中調試腳本

如何在 Windows PowerShell ISE 中調試腳本

介紹如何通過使用 Windows PowerShell? 集成腳本環境 (ISE) 直觀調試功能來調試本地計算機上的腳本。

如何管理斷點如何管理調試會話如何在調試過程中步越、步入和步出如何在調試時顯示變量的值

如何管理斷點

斷點是腳本中妳想要操作暫停的指定位置,這樣妳可以檢查變量的當前狀態和腳本運行的環境。 壹旦妳的腳本被斷點暫停,妳可以在控制臺窗格中運行命令來檢查妳的腳本狀態。 妳可以輸出變量或運行其他命令。 甚至可以修改對正在運行的腳本的上下文可見的任何變量的值。 檢查完妳想要查看的內容後,可以恢復該腳本的運行。

可以在 Windows PowerShell 調試環境中設置三種類型的斷點:

行斷點 **** 在腳本運行期間,當達到所指定的行時,腳本暫停

變量斷點。 每當指定變量的值發生更改時,腳本暫停。

命令斷點。 在腳本運行期間,每當要運行指定命令時,腳本暫停。 它可以包括參數,以便僅對所需操作進壹步篩選斷點。 該命令還可以是妳創建的函數。

其中,在 Windows PowerShell ISE 調試環境中,只有行斷點可以通過使用菜單或鍵盤快捷方式進行設置。 可以設置其他兩種類型的斷點,但應通過使用 Set-PSBreakpoint [m2] cmdlet 從控制臺窗格中進行設置。 本部分介紹了如何通過使用菜單(若有)在 Windows PowerShell ISE 中執行調試任務,並通過腳本從控制臺窗格中執行更廣泛的命令。

設置斷點

僅當保存腳本後,才可以在其中設置斷點。 右鍵單擊妳想要設置行斷點的行,然後單擊“切換斷點”。 或者,單擊妳想要設置的行斷點所在的行,然後按 F9,或在“調試”菜單上,單擊“切換斷點”。********

以下腳本是如何通過使用 Set-PSBreakpoint cmdlet 從控制臺窗格中設置變量斷點的示例。

# This command sets a breakpoint on the Server variable in the Sample.ps1 script.

set-psbreakpoint -script sample.ps1 -variable Server

列出所有斷點

在當前 Windows PowerShell? 會話中顯示所有斷點。

在“調試”菜單上,單擊“列表斷點”。******** 以下腳本是如何通過使用 Get-PSBreakpoint cmdlet 從控制臺窗格中列出所有斷點的示例。

# This command lists all breakpoints in the current session.

get-psbreakpoint

移除斷點

移除斷點會將其刪除。 如果妳認為稍後還可能再次使用,請考慮改為禁用。 右鍵單擊妳想要移除的斷點所在的行,然後單擊“切換斷點”。 或者,單擊妳想要移除的斷點所在的行,然後在“調試”菜單上,單擊“切換斷點”。******** 以下腳本是如何通過使用 Remove-PSBreakpoint cmdlet 從控制臺窗格中移除具有指定 ID 的斷點的示例。

# This command deletes the breakpoint with breakpoint ID 2.

remove-psbreakpoint -id 2

移除所有斷點

若要移除在當前會話中定義的所有斷點,在“調試”菜單上,單擊“移除所有斷點”。********

以下腳本是如何通過使用 Remove-PSBreakpoint cmdlet 從控制臺窗格中移除所有斷點的示例。

# This command deletes all of the breakpoints in the current session.

get-breakpoint | remove-breakpoint

禁用斷點

禁用斷點不會將斷點移除;只是會將其關閉,直至啟用。 若要禁用特定行斷點,右鍵單擊妳想要禁用的行斷點所在的行,然後單擊“禁用斷點”。 或者,單擊妳想要禁用的斷點所在的行,然後按 F9,或在“調試”菜單上,單擊“禁用斷點”。******** 以下腳本是如何通過使用 Disable-PSBreakpoint cmdlet 從控制臺窗格中移除具有指定 ID 的斷點的示例。

# This command disables the breakpoint with breakpoint ID 0.

disable-psbreakpoint -id 0

禁用所有斷點

禁用斷點不會將斷點移除;只是會將其關閉,直至啟用。 若要禁用在當前會話中的所有斷點,在“調試”菜單上,單擊“禁用所有斷點”。******** 以下腳本是如何通過使用 Disable-PSBreakpoint cmdlet 從控制臺窗格中禁用所有斷點的示例。

# This command disables all breakpoints in the current session.

# You can abbreviate this command as: "gbp | dbp".

get-psbreakpoint | disable-psbreakpoint

啟用斷點

若要啟用特定斷點,右鍵單擊妳想要啟用的斷點所在的行,然後單擊“啟用斷點”。 或者,單擊妳想要啟用的斷點所在的行,然後按 F9,或在“調試”菜單上,單擊“啟用斷點”。******** 以下腳本是如何通過使用 Enable-PSBreakpoint cmdlet 從控制臺窗格中啟用特定斷點的示例。

# This command enables breakpoints with breakpoint IDs 0, 1, and 5.

enable-psbreakpoint -id 0, 1, 5

啟用所有斷點

若要啟用在當前會話中定義的所有斷點,在“調試”菜單上,單擊“啟用所有斷點”。******** 以下腳本是如何通過使用 Enable-PSBreakpoint cmdlet 從控制臺窗格中啟用所有斷點的示例。

# This command enables all breakpoints in the current session.

# You can abbreviate the command by using their aliases: "gbp | ebp".

get-psbreakpoint | enable-psbreakpoint

如何管理調試會話

開始調試之前,必須設置壹個或多個斷點。 妳不能設置壹個斷點,除非已保存妳想要調試的腳本。 有關如何設置斷點的說明,請參閱如何管理斷點或 Set-PSBreakpoint。 開始調試後,將無法編輯腳本,除非停止調試。 運行之前,將自動保存設置有壹個或多個斷點的腳本。

啟動調試

按 F5 或在工具欄上單擊“運行腳本”圖標,或在“調試”菜單上單擊“運行\/繼續”。 腳本將壹直運行,直到它遇到第壹個斷點。 它將在此處暫停操作,並突出顯示它暫停時所在的行。

繼續調試

按 F5 或在工具欄上單擊“運行腳本”圖標,或在“調試”菜單上單擊“運行\/繼續”,或在控制臺窗格中鍵入 C,然後按 ENTER。 這將導致腳本繼續運行到下壹個斷點,或如果接下來沒有遇到任何斷點的話運行到腳本的末尾。

查看調用堆棧

調用堆棧會顯示腳本中的當前運行位置。 如果腳本在由其他函數調用的函數中運行,則會由輸出中的附加行在顯示中表示。 最底行顯示原始腳本以及腳本中調用函數所在的行。 下壹行顯示該函數以及函數中可能調用了另壹個函數所在的行。 最頂行顯示設置了斷點的當前行的當前上下文。

若要在暫停時查看當前調用堆棧,請按 CTRL+SHIFT+D,或在“調試”菜單上單擊“顯示調用堆棧”,或在控制臺窗格中鍵入 K,然後按 ENTER。

停止調試

按 SHIFT-F5,或在“調試”菜單上單擊“停止調試器”,或在控制臺窗格中鍵入 Q,然後按ENTER。

如何在調試過程中步越、步入和步出

單步執行是壹次運行壹條語句的過程。 妳可以在壹個代碼行上停止,然後檢查變量的值和系統狀態。 下表描述了常見的調試任務,如步越、步入和步出。

調試任務 說明 如何在 PowerShell ISE 中完成它

步入 執行當前的語句,然後在下壹個語句處停止。 如果當前語句是壹個函數或腳本調用,則調試器將單步調試該函數或腳本,或者停止在下壹條語句上。 按 F11,或在“調試”菜單上,單擊“步入”,或者,在控制臺窗格中,鍵入 S,然後按 ENTER。********

步越 執行當前的語句,然後在下壹個語句處停止。 如果當前語句是壹個函數或腳本調用,則調試器將執行整個函數或腳本,或者在函數調用後在下個語句處停止。 按 F10,或在“調試”菜單上,單擊“步越”,或者在控制臺窗格中,鍵入 V,然後按 ENTER。********

步出 跳出當前函數,如果函數是嵌套的則返回上壹級。 如果在主正文中,腳本將執行到末尾,或到下壹個斷點。 將執行跳過的語句,但不會單步遍歷。 按 SHIFT+F11,或在“調試”菜單上單擊“步出”,或在控制臺窗格中鍵入 O,然後按 ENTER。

繼續 繼續執行到結束,或到下壹個斷點。 將執行已跳過的函數和調用,但不會進行單步遍歷。 按 F5 或在“調試”菜單上單擊“運行\/繼續”,或在控制臺窗格中鍵入 C,然後按 ENTER。

如何在調試時顯示變量的值

單步遍歷代碼時,可以在腳本中顯示變量的當前值。

顯示標準變量的值

使用以下方法之壹:

在腳本窗格中,將鼠標懸停在變量上,以在工具提示中顯示它的值。

在控制臺窗格中,鍵入變量的名稱並按 ENTER。

ISE 中的所有窗格始終位於同壹作用域中。 因此,調試腳本時,妳在控制臺窗格中鍵入的命令在腳本作用域中運行。 這樣,妳便可以使用控制臺窗格查找變量的值,並調用僅在腳本中定義的函數。

顯示自動變量的值

調試腳本時,可以使用前述方法顯示幾乎所有變量的值。 但是,這些方法不適用於以下自動變量。

$_

$Input

$MyInvocation

$PSBoundParameters

$Args

如果妳嘗試顯示這些變量中的任何壹個的值,妳將獲取調試器使用的內部管道中變量的值,而不是腳本中變量的值。 對於壹些變量($_、$Input、$MyInvocation、$PSBoundParameters 和 $Args),可以使用以下方法解決此問題:

在腳本中,將自動變量的值分配給壹個新變量。

通過將鼠標懸停在腳本窗格中新變量上,或通過在控制臺窗格中鍵入新變量來顯示新變量的值。

例如,若要顯示 $MyInvocation 變量的值,在腳本中,將該值分配給壹個新變量(如 $scriptname),然後將鼠標懸停在 $scriptname 變量上,或鍵入 $scriptname 變量以顯示其值。

#In MyScript.ps1

$scriptname = $MyInvocation.MyCommand.Path

#In the Console Pane:

C:\ps-test> $scriptname

C:\ps-test\MyScript.ps1

  • 上一篇:學習前端 HTML5哪個培訓機構比較好,求推薦?
  • 下一篇:想零基礎學編程,昌平有什麽好的電腦學校嗎?
  • copyright 2024編程學習大全網