Home vscode踩坑记录
Post
Cancel

vscode踩坑记录



流水账记录使用vscode配置C/C++远程开发环境时的一些坑。

Overview

我们组主要使用C/C++进行llvm相关开发,并且由于同组师兄都在用vscode,所以我这CLion重度用户被迫转向vscode,而vscode之前仅仅被我用于刷leetcode,因此需要从头配置vscode扩展。

首先介绍一下两边的系统,服务器系统为ubuntu,版本似乎是20.04,ssh服务已开启,并且只能连接内网,我自己的系统是win 11,版本号并不重要因此懒得再查。

Remote-SSH

vscode本身有比较成熟的ssh扩展Remote-ssh,在extension store中搜索即可下载,之后按照服务器的ip、用户名和密码连接并为其选中配置文件即可成功连接,将远程环境映射到本地。我在这一步并没有出现奇怪的问题。

安装C/C++ & C/C++ Extension Pack

C/C++ 扩展会提供如代码提示、Go To Definition等实用功能,因此需要首先安装这两个扩展。

正常来说,如果本地已经安装完毕,在打开extension后对应的扩展上会显示Install On SSH:XXXXXXXX的看起来可以点的按钮,但是我点了八十遍依然毫无反应,甚至连报错都没有,上网Google发现同样有人遇到了一样的问题,解决方案不外乎这么几种:1. 删除.vscode-server文件夹 2. vscode卸载重装 3. 自己下载vsix文件并手动安装。

我尝试了第一种方式,并没有任何改变,然后我怀疑是vscode版本不对,于是卸载vscode并重新安装最新版本,依然无效。于是开始尝试手动安装。

首先遇到了第一个坑点,在vscode官方文档给出的界面中只有Install一个按钮,点完之后自动跳转到vscode弹出extension中对应的扩展安装界面,于是重新回到原点:Install On ssh 毫无反应。

然后上网Google教程,其中一篇博客给出了手动拼接vsix文件下载链接的方式,我尝试了一下,发现不知什么原因,下载出来并不是vsix文件,因此这条路我也没走通。

那么真正的vsix文件应该如何获取呢?

我想起来扩展应该是开源的,因此在github上可能有,并且成功在这个页面microsoft/vscode-cpptools: Official repository for the Microsoft C/C++ extension for VS Code. (github.com)找到了各种版本的扩展,选择最新版本,成功下载,并上传到服务器,over。

在获得了vsix文件之后,安装就变得简单了起来,通常有两种方式安装,并且经过我的尝试发现两种方式应该都是可以的。一种是在vscode extension界面中选择上面的...,然后选中Install by VSIX,在弹出的路径中选择想安装的扩展对应的VSIX文件,等待完成安装即可,安装后会弹窗提醒Reload。另一种是在Terminal中通过命令安装: code --install-extension XXX.VSIX,一样可以安装成功。

安装之后的问题

在成功安装扩展并在extension界面中显示Enable之后,我打开源码,发现了另一个严重的问题:vscode并没有成功的解析和处理源代码,因此代码跳转依然不可行。

我一开始以为要配置cmake、修改默认的编译器位置之类,但经过咨询列表诸位大佬,都说不需要,于是我就开始陷入了深深的自我怀疑之中:发生甚么事了?

来回重新启动vscode多次之后依然毫无作用,不得已再度求助Google,看到虽然有人在github上提交了这个问题的issue,但并没有人给出一种可行的解决方案。

stackoverflow上对这个问题的解答也不外乎上面提过的几种:删除.vscode-server,重装扩展,重装vscode。

.vscode-server来来回回多次卸载后重装,依然半死不活,扩展随着每次删除vscode-server也随之重装。这时我想起上次卸载并没有彻底删除vscode的配置文件,想着不管怎么样先把vscode彻底删掉以保证环境的纯洁,于是开始将C:/User/USERNAME/.vscode文件夹彻底删除,并进一步在文件资源管理器中搜索所有与vscode沾边的文件,一并删除。

删除后按照上面所述的步骤重装vscode和扩展,再度打开源码,终于,这次正常了。果然重装能解决99%的问题:dog:

但我依然不知道为什么会出现这个问题,或许是因为vscode本身的Bug?

This post is licensed under CC BY 4.0 by the author.