请阅读:见最后一点。我不认为这是与 Ubuntu 相关的问题,而是与 VS Code 相关的问题。
最近在17.10和18.04(我今天刚升级)下,Ubuntu会随机完全死机。我无法移动光标或使用键盘。自然,我尝试切换到 TTY 会话但没有成功。每次,我都必须求助于SysRq+ REISUB,这(显然)不是首选。
我试图切换图形驱动程序,理论上可能是这样。本来我用的是开源的nVidia驱动,后来改用专有的也没用。我目前正在使用开源驱动程序。
我通常打开的只是 Firefox(不是加载大量选项卡)和 VS Code,最多打开几个文件和一个终端。
有任何想法吗?
更新:系统日志显示没有任何迹象表明发生了任何事情,更不用说有什么问题了。我不知道这是否相关,但有时(尤其是在启动后)程序会花费大量时间(> 5-10 秒),甚至命令行程序也是如此。
又一个更新!— 即使禁用了所有 GNOME 扩展,它仍然崩溃。我尝试了 XFCE,它仍然崩溃。
摘要:Ubuntu 在看似随机的时间完全冻结,在日志中没有留下任何痕迹,并且与任何特定的桌面环境或 GNOME 扩展无关。
(可能是最终的)更新:我确信这是 VS Code 的问题。我已经运行 GNOME 好几天了,还打开了其他 Electron 应用程序(Slack、Pulse 等),并且没有一次冻结。我在 Twitter 上有 DM'd VS Code,并且可能会提交错误报告,因为他们还没有回复。
所以事实证明这并不是 Ubuntu 特有的,但无论如何我都会在这里发布以供将来参考。
显然,即使我使用
files.exclude
设置忽略了某些文件(特别是./node_modules
目录),VS Code 仍然会监视这些文件的更改。要解决这个问题,只需将列表从 复制
files.exclude
到files.watcherExclude
。node_modules
这将阻止 VS Code 搜索位于或其他类似目录中的数千个文件。这样一来,它就会为 Chrome 留下一些RAM 来吞噬。我刚碰到这个。启动后,在一个大型项目中,我的系统会在大约 20 秒后冻结并变得无响应(Ubuntu 18.04)。在启动 VSCode 时运行 htop 表明它将所有内核占用到 100% (i7-8700K),吃掉所有内存 (16gb) 然后交换。冻结发生在片刻之后。这是因为一个糟糕的扩展而发生的,在我的例子中是 CSS Peek。
所以尝试在禁用扩展的情况下启动 vscode(代码 --disable-extensions),看看它是否仍然发生。如果它没有找到故障扩展并将其发送到地狱。
我发生了随机的完全冻结,并花了好几个小时试图找出原因。重新启动时,日志真的没有帮助。我最初认为它是 nvidia 驱动程序,但不是 - 只是一个 VSCode 扩展。
我在我的 Ubuntu 16.04 中遇到了同样的问题。
我确实在Settings中关闭了git.autorefresh,然后它完美无瑕地运行
我遇到过同样的问题。最终我意识到,就我而言,问题是内存不足(我有 8gb 内存和磁盘上只有 1gb 交换分区)。我通过使用根目录中的文件分配额外的交换空间来解决此问题:
这将为您的系统临时启用额外的 8GB 交换空间。如果有帮助,您可以在此处阅读有关不断启用新交换的进一步说明。
另一个选项是:物理添加 RAM 或添加/扩大交换分区。
我使用新的交换作为文件,因为我得到了 luks+lvm 加密系统,并且在我的情况下调整现有交换分区的大小太复杂和冒险。
PS 我得到了 Ubuntu 18.04
我遇到过同样的问题。要为特定项目修复此问题,您需要将其更新
.vscode/settings.json
为如下所示:对我来说,调用 vscode 时禁用 gpu 解决了这个问题。
通过使用此别名打开 vscode 来做到这一点:
运行 VSC 时,我也遇到过随机系统崩溃。甚至尝试在没有扩展的情况下开始,这对我一点帮助都没有。有几次我的系统在 VSC 启动时就死机了。
但是,我检查了日志,发现这些崩溃可能与图形驱动程序(NVidia GTX 660)有关。
我的解决方案:从 Nouveau 切换到专有驱动程序(我选择了元包)
顺便说一句:使用 Ubuntu 18.04
我已经尝试了上述解决方法,但没有运气。
对我来说,在 grub 中设置 intel_idle.max_cstate=1 参数效果很好。
重新启动它。
对我来说,以下解决方法有效
打开命令面板 (Ctrl+Shift+P)。运行首选项:配置运行时参数命令。此命令将打开一个 argv.json 文件来配置运行时参数。您可能已经在那里看到了一些默认参数。添加 "disable-hardware-acceleration": true 重启 VS Code。
下载 VSCode 并解压。您将在文件夹中看到一个文件名“code”。打开终端并导航到该文件夹。输入命令
通过reddit 上的 phero_constructs
另外,请参阅此问题评论。你可以按CTRL+SHIFT+P,然后找到Preferences Configuration。将其插入到 json 中(不要忘记在前面的条目后添加逗号):