終端啟動失敗疑難解答
首先,對於您無法愉快地使用 Visual Studio Code 中的整合終端,反而需要閱讀此文件,我們深表歉意。VS Code 團隊一直努力使終端體驗儘可能順暢,但在某些情況下,由於 shell 或終端配置問題,VS Code 編輯器無法解決。
在與數百名開發人員合作診斷他們的終端啟動失敗問題後,VS Code 團隊整理了這篇文章,其中包含了過去幫助過人們的建議和故障排除技巧。我們希望您能在這裡找到解決 shell 或終端問題的答案,並能儘快恢復工作。
整合終端使用者指南
如果您是 VS Code 整合終端的新使用者,可以在整合終端使用者指南中瞭解更多資訊。在那裡您可以閱讀如何配置終端,並檢視常見問題的答案。
如果使用者指南未能幫助您診斷啟動失敗問題,下面是具體的故障排除步驟。這些故障排除步驟,例如檢查您的設定和啟用日誌記錄,適用於所有支援 VS Code 的平臺:macOS、Linux 和 Windows。
注意:如果您使用的是 Windows,您可能需要首先檢視Windows 常見問題部分。
故障排除步驟
要解決 Visual Studio Code 中整合終端啟動失敗的問題,請按照以下步驟診斷問題:
-
檢查您的使用者設定。 檢視這些可能影響啟動的
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 搜尋特定設定。
快速檢查您是否在不知不覺中更改了設定的方法是,在“設定”編輯器中使用
@modified
過濾器。大多數整合終端設定需要直接在您的使用者
settings.json
JSON 檔案中修改。您可以透過“設定”編輯器中的在 settings.json 中編輯連結,或從命令面板(⇧⌘P(Windows、Linux Ctrl+Shift+P))使用首選項:開啟使用者設定 (JSON) 命令來開啟settings.json
。 -
直接測試您的 shell。 嘗試在 VS Code 之外,從外部終端或命令提示符執行您指定的整合終端 shell。某些終端啟動失敗可能是由於您的 shell 安裝問題,而非 VS Code 特有。顯示的退出程式碼來自 shell,您可以透過在網際網路上搜索特定 shell 和退出程式碼來診斷 shell 問題。
-
使用最新版本的 VS Code。 每個 VS Code 每月版本都有許多更新和修復,可能包括整合終端的改進。您可以透過幫助 > 關於(在 macOS 上是 Code > 關於 Visual Studio Code)檢視您的 VS Code 版本。要查詢最新版本的 VS Code,請訪問 VS Code 發行說明。您可能還需要檢查是否安裝了最新版本的 shell。
-
使用最新版本的 shell。 如果您的 shell 是獨立於平臺安裝的,請嘗試安裝最新可用版本的 shell。如果您使用的是較舊版本的作業系統,也適用相同的建議。例如,某些舊版本的 Windows 10 與 VS Code 終端配合不佳。
-
啟用跟蹤日誌記錄。 您可以啟用跟蹤日誌記錄並在啟動終端時捕獲日誌。日誌通常會揭示問題所在,因為所有用於建立終端程序/pty 的引數都會被記錄下來。錯誤的 shell 名稱、引數或環境變數可能導致終端無法啟動。如果問題未解決,請保留此日誌以供後續使用。
其他故障排除步驟
如果以上步驟都未能解決問題,您還可以嘗試:
- 在 Stack Overflow 上提問,啟動問題通常與環境設定有關,而非 VS Code 的問題。
- 如果終端是由擴充套件程式啟動的,請透過開啟問題報告器(幫助 > 報告問題)並設定“提交至”=“擴充套件程式”向擴充套件程式報告問題。
- 如果您認為這是 VS Code 的錯誤,請使用問題報告器(幫助 > 報告問題)報告問題。問題報告器會自動填寫相關資訊,請參閱創建出色的終端問題瞭解報告中還需要包含哪些內容。
- 如果您使用的是 Windows 10 1809(內部版本 17763)或更低版本,則問題與舊版“winpty”後端有關。升級到 Windows 1903(內部版本 18362)將切換到由 Microsoft 構建的新“conpty”後端,這可能會解決您的問題。
- 如果您的終端設定為僅以管理員身份執行,並且您沒有以管理員身份啟動 VS Code,則終端將無法開啟。您可以更改預設終端,或編輯終端可執行檔案的屬性,使其不以管理員身份執行。
退出程式碼
終端啟動失敗通知中顯示的退出程式碼由 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,右鍵單擊標題欄,轉到屬性,然後在選項選項卡下,取消選中使用舊版控制檯。
後續步驟
- 整合終端使用者指南 - 瞭解有關一般終端使用和配置的更多資訊。