【www.129028.com金沙】解决vs-code高cpu占用率问题

日期:2019-11-09编辑作者:操作系统

(microsoft.vscode.cpp.extension.darwin进程高cpu占用问题)

最后更新于2018年12月26日:

www.129028.com金沙 1
免费的vs-code现在已经成为mac/linux平台的码农新宠,毕竟从windows平台开发virsul studio多年的经验积累不是白给的。
我也从诸多的代码编辑器环境,逐渐迁移、统一到了vs-code。最近发现一启动vs-code,风扇就呼呼转,才开始还没注意,以为微软的Windows中二病做派再次发作了。后来逐渐感觉系统响应速度严重下降,仔细检查发现是一个进程CPU占用高企不坠:microsoft.vscode.cpp.extension.darwin,如果是在linux平台则是:microsoft.vscode.cpp.extension.linux。
在网上搜索,发现这个问题早已有之,社区中投诉帖汗牛充栋,大致可以把问题界定向vs-code的插件机制和扩展插件的问题,但实际解决问题的方法一直没有,大家都寄期望于软件的升级。
不过花费大量时间后,最终在一个帖子的很靠后位置找到一个解决办法:
编辑文件:.vscode/extensions/ms-vscode.cpptools-0.17.7/out/src/LanguageServer/client.js,注意如果你的c++插件不是0.17.7版本(当前最新版),请修改为你当前版本的文件夹。
修改内容:

多次更新,内容较多,篇幅较大,但如果是喜欢visual stdio code这款编辑器的话建议仔细阅读,有疑问的地方可以在评论区留言

-        extensionProcessName += '.linux';
+        //extensionProcessName += '.linux';
+        extensionProcessName += '.linux.sh';
     }
     else if (plat == 'darwin') {
        extensionProcessName += '.darwin';

vscdoe是一款稍有研究就会为之惊叹的软件

随后再建立一个文件:~/.vscode-insiders/extensions/ms-vscode.cpptools-0.17.7/bin/Microsoft.VSCode.CPP.Extension.linux.sh,同样注意版本号跟文件夹对应。内容为:

vscode支持类似于vs的断点调试c/c++,也可以直接编译运行c/c++

#!/bin/bash
exec /opt/glibc-2.18/lib/ld-linux-x86-64.so.2 
        --library-path /opt/glibc-2.18/lib:/lib64:/lib64  
   "${0//.sh/}" ${1+"$@"}

先是编译运行 c/c++的方法

原文的修改方式是对linux。尝试修改完重启vs-code,故障排除了。
但是在mac电脑,这种方式就不灵了,macOS所使用的链接库不是这种方式,而且签名机制也不太容易搞定。
所以建议先卸载微软提供的c/c++扩展,可以安装第三方的c++扩展工具,用起来没太大的区别。比如austin出品的C++ Intellisense。

微软官方起初设定的科学做法(这也是现在的科学做法)是通过在vscode集成控制台写命令行的方式来实现编译运行程序的,但也可以通过code runner插件来简化步骤,实现一键编译执行

参考文档

https://github.com/Microsoft/vscode-cpptools/issues/1249

但无论是什么方法,因为vscode本身并不带有编译器,都需要自己提前安装好一个c/c++编译器(如mingw,clang)并且配置好环境变量

控制台下编译运行C/C++(如果不懂命令行操作可以暂时跳过这里):

按 ctrl + ~ 打开vscode控制台,点击终端,在vscode的终端下操作其实就是在windows下的cmd或者powershell下操作,一切的编译运行等操作可以用输入命令行的方式来实现,只要掌握各自的编译器的命令行指令就能让程序在vscode界面上运行起来

c/c++编译器的那一套自然不在话下,先用cd 命令切换到源文件目录或者直接输入完整路径名,然后用编译器指令(假设编译器是mingw) g++ xxx.cpp -o xxx.exe编译,接着再输入./xxx.exe就可以运行编译好的程序

其他的c/c++编译器如clang包括其他语言(Python ,Go,Java...)都可以类似的这样操作

www.129028.com金沙 2

www.129028.com金沙 3

便捷方式是使用code runner插件:

code runner插件默认的c/c++编译器是gcc/g++,需要提前安装好并且设置好环境变量,通常选择MinGW或者MinGW-w64,建议选mingw-w64,一般用户建议下载离线版解压后添加环境变量,离线版下载地址:链接

不会请看:安装mingw-w64具体过程

同时,code runner插件使用的编译器是可以被修改为gcc/g++以外的编译器的(比如clang,MSVC),有这方面需要请看:vscode修改code runner使用的编译器

mingw和mingw-w64是有区别的,直观的说,mingw-w64更加强大

安装好并且设置好二者中的一个,并设置好环境变量后在cmd下输入gcc -v确认是否成功,出现关于gcc -v的相关信息就表示成功

www.129028.com金沙 4

接着点击vscode左侧面板中的插件商店按钮

安装好下面两个插件

C/C++

Code runner

如果需要中文请安装一个chinese插件

www.129028.com金沙 5

注意,如果没安装clang的话不要安装推荐插件里的c/c++ clang插件,否则应该会报错

安装好后重启一下vscode这样就能在右上角看见一个三角形了,打开文件点击就能编译执行

但此时会有这样一个问题

如果程序里有scanf()等请求键盘输入数据的函数,此时无法从键盘输入数据,并且程序无法结束需要关闭重启vscode才能重新执行

www.129028.com金沙 6

解决办法是依次打开:文件>首选项>设置>用户设置>拓展>Run Code Configuration

找到 Run In Terminal 打上勾 这样运行的程序就会运行在vscode的集成控制台上

在工作区设置也有这个选项,但工作区设置只会对工作区生效

这样问题就能解决了

www.129028.com金沙 7

运行一段测试代码

#include<bits/stdc++.h>  using namespace std;    int main(){      cout<<"hello"<<endl;      int u;      while(cin>>u){          cout<<u*u<<endl;      }  }  

这时输出信息会显示在终端栏下面

本文由www.129028.com金沙发布于操作系统,转载请注明出处:【www.129028.com金沙】解决vs-code高cpu占用率问题

关键词:

ssh-keygen的学习总结

[oracle@mylnx02~]$ cat ~/.ssh/id_rsa.pub~/.ssh/authorized_keys 采用数字签名RSA或者DSA实现两个linux机器之间使用ssh不需要用户名和...

详细>>

Centos7安装完毕后无法联网的解决方法(转)

    经测试,就可以顺利的联网拉 进入目录: 用ls命令查看网卡配置文件名(在CENTOS7中网卡名貌似变成了随机数字,...

详细>>

Centos7上编译安装LAMP,并且部署wordpress博客

实验环境: 虚拟机CentOS7,ip为172.16.250.103 在生产中有时候会遇到一台主机要运行多个MySQL服务器----叫做多实例 官网上...

详细>>

CentOS7.0编译httpd全过程

编译安装nginx需要pcre包,未安装会有如下提示: yum -y install bzip2 ./configure: error: the HTTP rewrite module requires the PCRE libr...

详细>>