疑難排解終端機啟動失敗
首先,我們很遺憾您需要閱讀這份文件,而不是享受使用 Visual Studio Code 整合式終端機的樂趣。VS Code 團隊致力於讓終端機體驗盡可能順暢,但在某些情況下,VS Code 編輯器無法解決 Shell 或終端機設定所引發的問題。
在與數百位開發人員共同診斷終端機啟動失敗的問題後,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- 是否針對 Windows 終端機程序通訊使用 ConPTY。
您可以在設定編輯器(檔案 > 喜好設定 > 設定)中檢閱設定,並透過設定 ID 搜尋特定設定。

若要快速檢查是否已變更自己可能不自知的設定,可以在設定編輯器中使用
@modified篩選器。
大多數的整合式終端機設定必須直接在使用者
settings.json檔案中修改。您可以透過設定編輯器中的在 settings.json 中編輯連結開啟settings.json,或是使用命令選擇區(⇧⌘P (Windows, Linux Ctrl+Shift+P))中的 喜好設定:開啟使用者設定 (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 終端機良好地運作。
-
啟用追蹤記錄。 您可以啟用追蹤記錄 (trace logging),並在啟動終端機時擷取記錄。記錄檔通常會揭露問題所在,因為所有用於建立終端機程序/pty 的參數都會被記錄下來。錯誤的 Shell 名稱、參數或環境變數都可能導致終端機無法啟動。如果問題未解決,請保留此記錄以備後用。
額外疑難排解步驟
如果上述步驟皆無法解決問題,您也可以嘗試:
- 在 Stack Overflow 上詢問。啟動問題通常與環境設定有關,而非 VS Code 本身的問題。
- 如果終端機是由擴充功能啟動的,請透過問題回報工具(說明 > 回報問題)回報給該擴充功能,並將「檔案來源 (File On)」設定為「一個擴充功能 (An Extension)」。
- 如果您認為這是 VS Code 的錯誤,請使用問題回報工具(說明 > 回報問題)進行回報。問題回報工具會自動填入相關資訊,請參閱建立優質的終端機問題回報 (Creating great terminal issues),了解報告中還需要包含哪些資訊。
- 如果您使用 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 的 Windows 子系統 (WSL) 未設定有效的預設 Linux 發行版,就可能會發生此錯誤。
注意: 'docker-desktop-data' 並非有效的發行版。
- 開啟 PowerShell 並輸入
wslconfig.exe /l,以確認 WSL 安裝正確,並列出系統中目前可用的 Linux 發行版。確認有效的發行版旁邊標示有 (預設)。 - 若要變更預設發行版,請輸入
wslconfig.exe /setdefault "清單中顯示的發行版名稱"
發生原生例外狀況 (A native exception occurred)
此錯誤通常是因為防毒軟體攔截並阻止 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,在標題列按一下右鍵,前往 內容,並在 選項 索引標籤下取消勾選 使用舊版主控台。

後續步驟
- 整合式終端機使用者指南 - 了解更多關於一般終端機的使用與設定。