簡體   English   中英

從終端調試 Visual Studio Code PowerShell 代碼

[英]Visual Studio Code PowerShell code debugging from the terminal

我在代碼窗口中打開了 PowerShell 腳本。 我正在從終端啟動相同的腳本,並希望它在調試模式下運行。 這意味着:腳本將在斷點處停止。

描述的行為類似於 PowerShell ISE。 但是,它運行整個腳本而不會在斷點處停止。

從終端啟動時有沒有辦法實現腳本調試?

當您執行 PowerShell 控制台時,您可以使用下面的此命令在腳本中的給定代碼行設置斷點,然后指定腳本。 當您的腳本運行時,它將在您請求的給定點中斷。

Set-PSBreakpoint -Line 9  -Script C:\temp\test_script.ps1

不幸的是, 對於 Visual Studio CodePowerShell 擴展v2019.5.0,支持通過外部控制台窗口進行調試。

支持此方案的長期功能請求此 GitHub 問題 中,但尚未實施 - 我建議您在那里對提案進行投票。
更新:我似乎正在積極進行改進

解決方法,自 v2019.5.0 起:

Windows 上,僅使用外部 PowerShell Core控制台

  • 打開腳本所在的文件夾進行編輯,而不僅僅是腳本文件本身。

  • 切換到調試視圖(查看 > 調試)

  • 如果左上角的下拉列表顯示No Configurations ,請單擊其右側的齒輪圖標:

    • 如果提示輸入環境,請選擇PowerShell
    • .vscode/launch.json文件將在您的文件夾中創建,其中包含調試啟動配置,這些配置是調試視圖下拉列表中提供的選項的基礎。
  • 在下拉列表中選擇PowerShell Attach to Host Process

除了需要在以后的會話中打開整個文件夾外,上述步驟應該只需要一次

要啟動調試會話:

注意:調試需要運行 PowerShell 集成控制台,目前無法自動確保。 如果您至少在編輯器中激活 PowerShell 腳本一次,PowerShell 集成控制台將啟動,如集成終端右上角顯示活動 shell 的下拉列表所示。

  • F5 (調試 > 開始調試)。

  • 系統將提示您選擇要附加到的目標進程:選擇要附加到的 PowerShell Core 會話; 所有此類會話都以pwsh為前綴,並顯示其控制台窗口標題以及 PID(進程 ID); 如有疑問,請在目標控制台窗口中執行$PID以確定其 PID。

  • 選擇運行空間1作為目標運行空間(即使它顯示Busy )。

    • 注意:您可以在將來跳過此步驟,方法是將運行空間 1 的使用硬編碼到.vscode/launch.json啟動配置中: .vscode/launch.json添加到定義配置"PowerShell Attach to Host Process"的 JSON 對象中: "runspaceId": 1

調試器現在應該附加到您的外部 PowerShell Core 控制台,如集成終端中的狀態輸出所示。

需要注意的是Visual Studio代碼不會自動激活時,調試器遇到斷點,也當恢復執行不會自動關閉-你必須手動切換外接控制台和Visual Studio代碼之間。

  • 切換到外部 PowerShell Core 控制台並調用要調試的腳本。

    • 在會議的一次,調試器將打破向右走,即在年底PSConsoleHostReadLine功能
    • 要么從那里開始單步執行腳本,要么只需按F5 (調試 > 繼續)繼續執行,直到遇到先前設置的斷點。
  • 要停止調試,請使用Shift + F5 (調試 > 停止調試)或按下調試工具欄上的斷開連接圖標(描繪紅色插頭)。


使用Windows PowerShell / 在其他平台上,您可以使用當前功能最接近的是使用集成終端,通過調試啟動配置PowerShell Interactive Session

注意:macOS 和 Linux 上的 PowerShell Core應該支持上述針對 Windows 的調試技術,但這在我的 macOS 10.14.6 機器上並沒有運行 PowerShell Core 7.0.0-preview.2; 天啊。

限制是:

  • 沒有 PSReadLine 功能可用 - 特別是不能使用向上箭頭鍵調用命令。

  • 例如,集成終端與編輯器窗口共享 Visual Studio Code 窗口,因此您無法將終端彈出到可以放置在單獨監視器上的單獨窗口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM