現已釋出!閱讀關於 11 月新增功能和修復的內容。

終端啟動故障排除

首先,我們想說很抱歉您在這裡閱讀本文件,而不是在 Visual Studio Code 中愉快地使用整合終端。VS Code 團隊努力使終端體驗儘可能流暢,但在某些情況下,由於 shell 或終端配置存在問題,VS Code 編輯器無法解決。

在與數百名開發人員合作診斷終端啟動失敗後,VS Code 團隊整理了這篇文章,其中包含了過去幫助過人們的建議和故障排除技巧。我們希望您能在這裡找到解決 shell 或終端問題的答案,並能快速恢復工作。

整合終端使用者指南

如果您是 VS Code 整合終端的新使用者,可以在整合終端使用者指南中瞭解更多資訊。在那裡您可以閱讀如何配置終端,並檢視常見問題的答案。

如果使用者指南沒有幫助您診斷啟動失敗,下面是具體的故障排除步驟。故障排除步驟(例如檢查設定和啟用日誌記錄)適用於支援 VS Code 的所有平臺:macOS、Linux 和 Windows。

注意:如果您使用的是 Windows,您可能需要首先檢視Windows 上的常見問題部分。

故障排除步驟

要排查 Visual Studio Code 中整合終端啟動失敗的問題,請按照以下步驟診斷問題

  1. 檢查您的使用者設定。 檢視這些可能影響啟動的 terminal.integrated 設定

    • terminal.integrated.defaultProfile.{platform} - 終端使用的預設 shell 配置檔案。
    • terminal.integrated.profiles.{platform} - 定義的 shell 配置檔案。設定 shell 路徑和引數。
    • terminal.integrated.cwd - shell 程序的當前工作目錄 (cwd)。
    • terminal.integrated.env.{platform} - 新增到 shell 程序的環境變數。
    • terminal.integrated.inheritEnv - 新 shell 是否應從 VS Code 繼承其環境。
    • terminal.integrated.automationProfile.{platform} - 用於自動化相關終端使用(例如任務和除錯)的 shell 配置檔案。
    • terminal.integrated.splitCwd - 控制拆分終端啟動時使用的當前工作目錄。
    • terminal.integrated.windowsEnableConpty - 是否使用 ConPTY 進行 Windows 終端程序通訊。

    您可以在“設定”編輯器中檢視設定(檔案 > 首選項 > 設定),並透過設定 ID 搜尋特定設定。

    Search for Integrated terminal settings

    快速檢查您是否更改了可能沒有意識到的設定的方法是使用“設定”編輯器中的 @modified 過濾器。

    Filter for modified settings

    大多數整合終端設定需要直接在您的使用者 settings.json JSON 檔案中修改。您可以透過“設定”編輯器中的在 settings.json 中編輯連結開啟 settings.json,或者透過命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中的首選項:開啟使用者設定 (JSON) 命令開啟。

    A user's settings.json file

  2. 直接測試您的 shell。 嘗試在 VS Code 之外從外部終端或命令提示符執行您指定的整合終端 shell。某些終端啟動失敗可能是由於您的 shell 安裝引起的,並且不是 VS Code 特有的問題。顯示的退出程式碼來自 shell,您可以透過在網際網路上搜索特定 shell 和退出程式碼來診斷 shell 問題。

  3. 使用最新版本的 VS Code。 每個 VS Code 每月版本都有許多更新和修復,可能包括整合終端改進。您可以透過幫助 > 關於(在 macOS 上為程式碼 > 關於 Visual Studio Code)檢查您的 VS Code 版本。要查詢最新版本的 VS Code,請訪問 VS Code 發行說明。您可能還想檢查您是否安裝了最新版本的 shell。

  4. 使用最新版本的 shell。 如果您的 shell 是單獨安裝的,而不是隨平臺安裝的,請嘗試安裝最新版本的 shell。如果您使用的是較舊的作業系統版本,也適用同樣的建議。例如,某些較舊版本的 Windows 10 與 VS Code 終端配合不佳。

  5. 啟用跟蹤日誌記錄。 您可以啟用跟蹤日誌記錄並在啟動終端時捕獲日誌。日誌記錄通常會揭示問題所在,因為用於建立終端程序/pty 的所有引數都會被記錄下來。錯誤的 shell 名稱、引數或環境變數可能導致終端無法啟動。如果問題未解決,請保留此日誌以供日後參考。

其他故障排除步驟

如果這些步驟都沒有幫助解決問題,您還可以嘗試

  • Stack Overflow 上提問,啟動問題通常與環境設定有關,而不是 VS Code 的問題。
  • 如果終端是從擴充套件啟動的,請透過開啟問題報告器(幫助 > 報告問題)並將“檔案位於”設定為“一個擴充套件”向擴充套件報告問題
  • 如果您認為這是 VS Code 的錯誤,請使用問題報告器(幫助 > 報告問題)報告問題。問題報告器會自動填充相關資訊,請參閱創建出色的終端問題以瞭解報告中還應包含哪些內容。
  • 如果您使用的是 Windows 10 1809(內部版本 17763)或更低版本,則問題與舊版“winpty”後端相關。升級到 Windows 1903(內部版本 18362)會將您切換到由 Microsoft 構建的新“conpty”後端,這可以解決您的問題。
  • 如果您的終端設定為僅以管理員身份執行,並且您未以管理員身份啟動 VS Code,則終端無法開啟。您可以更改預設終端或編輯終端 exe 的屬性,使其不以管理員身份執行。

退出程式碼

終端啟動失敗通知中顯示的退出程式碼是從 shell 程序返回的,並非由 VS Code 生成。終端中可以使用許多可用的 shell,並且有數百個可能的退出程式碼。

  • 嘗試在網際網路上搜索您的特定 shell 和退出程式碼(例如,“PowerShell 4294901760”),您可能會找到與您的終端啟動失敗相關的特定建議或已知問題。
  • 嘗試在 shell 的問題儲存庫中搜索。例如,如果您在 WSL 方面遇到問題,您可能會在 https://github.com/microsoft/WSL/issues 中搜索您的問題程式碼,從而找到解決方法。

Windows 上的常見問題

確保停用相容模式

當您升級到 Windows 10 時,某些應用可能會自動開啟相容模式。如果為 VS Code 啟用了相容模式,則終端會中斷,因為它會執行一些低階操作來啟用它使用的模擬。您可以透過右鍵單擊 VS Code 可執行檔案,選擇屬性,然後在相容性選項卡中取消選中以相容模式執行此程式選項來檢查和停用相容模式。

終端在 Windows 10 上以程式碼 1 退出(使用 WSL 作為預設 shell)

如果未設定有效的預設 Linux 發行版,則可能發生此錯誤。

注意: 'docker-desktop-data' 不是有效的發行版。

  • 開啟 PowerShell 並輸入 wslconfig.exe /l 以確認 WSL 已正確安裝並列出系統中當前可用的 Linux 發行版。確認一個有效的發行版旁邊有 (default)
  • 要更改預設發行版,請輸入 wslconfig.exe /setdefault "distributionNameAsShownInList"

發生本機異常

通常,此錯誤是由於防病毒軟體攔截並阻止 winpty/conpty 元件建立終端程序而發生的。要解決此錯誤,您可以將以下檔案從防病毒掃描中排除

{install_path}\resources\app\node_modules.asar.unpacked\node-pty\build\Release\winpty.dll
{install_path}\resources\app\node_modules.asar.unpacked\node-pty\build\Release\winpty-agent.exe
{install_path}\resources\app\node_modules.asar.unpacked\node-pty\build\Release\conpty.node
{install_path}\resources\app\node_modules.asar.unpacked\node-pty\build\Release\conpty_console_list.node

向防病毒團隊報告此問題也有助於徹底消除此問題。

終端以程式碼 259 退出

當終端嘗試啟動新程序(例如 PowerShell.exe)時,退出程式碼 259 可能意味著 STILL_ACTIVE。您可以嘗試終止計算機上未使用的程式和程序,以防其中一個程式使終端 shell 程序保持活動狀態且無法重新啟動。

計算機上執行的防病毒軟體也可能會干擾終端 shell 的啟動。

終端以程式碼 3221225786(或類似程式碼)退出

當您在 conhost 的屬性中啟用舊版控制檯模式時,可能會發生這種情況。要更改此設定,請從開始選單開啟 cmd.exe,右鍵單擊標題欄,轉到屬性,然後在選項選項卡下,取消選中使用舊版控制檯

Use legacy mode checkbox

後續步驟

© . This site is unofficial and not affiliated with Microsoft.