疑難排解終端機啟動失敗問題
首先,我們要向您致歉,您現在正在閱讀這份文件,而不是愉快地使用 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
- 是否針對 Windows 終端機程序通訊使用 ConPTY。
您可以在設定編輯器 (檔案 > 喜好設定 > 設定) 中檢閱設定,並依設定 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,則終端機無法開啟。您可以變更預設終端機,或編輯終端機 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 的 Windows 子系統 (WSL) 未設定為有效的預設 Linux 發行版,則可能會發生此錯誤。
注意: 'docker-desktop-data' 不是有效的發行版。
- 開啟 PowerShell 並輸入
wslconfig.exe /l
以確認 WSL 已正確安裝,並列出系統中目前可用的 Linux 發行版。確認有效的發行版旁邊有 (預設)。 - 若要變更預設發行版,請輸入
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,以滑鼠右鍵按一下標題列,前往屬性,然後在選項索引標籤下,取消選取使用舊版主控台。
後續步驟
- 整合式終端機使用者指南 - 深入了解一般終端機使用和設定。