现已发布!阅读有关一月份的新功能和修复。

疑难解答终端启动失败

首先,我们很抱歉您在此阅读本文档,而不是在 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 - 是否为 Windows 终端进程通信使用 ConPTY。

    您可以在“设置”编辑器(文件 > 首选项 > 设置)中查看设置,并通过设置 ID 搜索特定设置。

    Search for Integrated terminal settings

    检查您可能未注意到的更改设置的快速方法是使用“设置”编辑器中的 @modified 过滤器。

    Filter for modified settings

    大多数集成终端设置需要直接在用户 settings.json JSON 文件中修改。您可以通过“设置”编辑器中的编辑 settings.json 链接,或使用命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中的首选项: 打开用户设置 (JSON) 命令来打开 settings.json

    A user's settings.json file

  2. 直接测试您的 shell。 尝试在 VS Code 外部从外部终端或命令提示符运行指定的集成终端 shell。一些终端启动失败可能是由于您的 shell 安装问题,而不是 VS Code 特有的问题。显示的退出代码来自 shell,您可能可以通过在互联网上搜索特定的 shell 和退出代码来诊断 shell 问题。

  3. 使用最新版本的 VS Code。 每个 VS Code 月度版本都有许多更新和修复,可能包括集成终端的改进。您可以通过帮助 > 关于(macOS 上为Code > 关于 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)会将您切换到微软构建的新 "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 退出(默认 shell 为 WSL)

如果 Windows Subsystem for Linux (WSL) 未配置有效的默认 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 退出

退出代码 259 在终端尝试启动新进程(如 PowerShell.exe)时可能意味着 STILL_ACTIVE。您可以尝试在计算机上终止未使用的程序和进程,以防其中一个进程使终端 shell 进程保持活动状态而无法重新启动。

您计算机上运行的防病毒软件也可能会干扰启动您的终端 shell。

终端以代码 3221225786(或类似代码)退出

当 conhost 属性中启用了旧版控制台模式时,可能会发生这种情况。要更改此设置,请从“开始”菜单打开 cmd.exe,右键单击标题栏,转到属性,然后在“选项”选项卡下,取消选中使用旧版控制台

Use legacy mode checkbox

后续步骤

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