使用VScode + clangd 阅读 c/c++ 源码环境搭建

使用Vscode + clangd 阅读c/c++源码

一、需求

在嵌入式软件开发的工作中,我们常常需要分析C/C++代码,比如linux kernel 的代码,而公司的代码一般都会存放在服务器中,服务器一般是linux,且无法联网,我们只能通过本地笔记本ssh访问服务器,这就导致阅读linux 源码时,需要跳转定义、声明时比较麻烦,本文就介绍了使用VScode + clangd 实现这个需求,同时会更新一些有效的插件帮助开发

二、实现逻辑简介

clangd 是一个应用程序,可以实现对c项目中的符号定义跳转,函数补全等功能。
Vscode 是文本编辑器,可以使用clangd 插件与服务器上的clangd 交互,实现vscode编辑器内的符号跳转等

三、环境安装

下载vscode

1、remote - ssh

安装remote - ssh 插件,并添加一个远程服务器:
连接到192.168.1.12 服务器,用户名prx,端口是22

ssh [email protected] -p 22

进入后需要输入密码,这样就能浏览服务器上的文件了。
注意:需要给当前用户编辑文件的权限,不然在vscode中编辑的内容无法保存到服务器,例如在kernel项目根目录下执行:

sudo chmod 777 -R .

2、安装clangd

clangd ,也可以叫clangd server,她要安装在服务器上,读取kernel 项目的代码,分析代码的编译规则等,然后等待客户端的请求。
在ubuntu 上可以用下面命令安装clangd

sudo apt-install clangd

clangd 需要输入compile_command.json文件才能开始分析kernel 的源码。要在kernel 的代码中生成compile_command.json文件,需要借助bear 应用程序,用下面命令安装bear

sudo apt-install bear

然后使用下面的命令编译kernel ,就能在kernel根目录下看到compile_command.json

sudo bear make -j8

clangd server 还需要配置文件来告诉她去那里找到compile_command.json,在kernel 项目根目录下,新建一个 .clangd 文件,编辑文件输入下面的内容:

compile_commands_dir: /home/prx/purple_pi/out/kernel/src_tmp/linux-5.10

其中** /home/prx/purple_pi/out/kernel/src_tmp/linux-5.10** 是你的kernel 代码的根目录

完成以上步骤,就可以启动clangd了,只需要执行 clangd,就会启动clangd server,读取/home/prx/purple_pi/out/kernel/src_tmp/linux-5.10compile_command.json,分析代码符号,并等待客户端请求.
使用VScode + clangd 阅读 c/c++ 源码环境搭建_第1张图片

3、安装vscode clangd 插件

启动vscode,连接到服务器,并安装clangd 插件:
在这里插入图片描述
这个clangd 插件是作为一个客户端,去和服务器上的clangd server 进行交互,发送请求等,所以她的体积并不大。安装完成后,就可以在vscode上打开kernel 的目录,随意点开一个文件,尝试跳转定义等。

4、clangd 的功能演示

代码补全:
使用VScode + clangd 阅读 c/c++ 源码环境搭建_第2张图片
查看声明和定义:
使用VScode + clangd 阅读 c/c++ 源码环境搭建_第3张图片
跳转符号的定义处:
ctrl + p 调出vscode 命令行,输入#前缀,再输入符号名称,即可跳转到定义处

#kmalloc

格式化文件
可以将c、c++、文件格式化,保证文件的语法格式健康,快捷键shift+alt+f

四、vscode插件推荐

1、hightlight-words插件

变量高亮是阅读代码中实用的功能,在vscode中安装hightlight-words 插件,可以实现该功能。
在这里插入图片描述
下面教你如何设置快捷键实现变量高亮:
打开vscode命令行输入:

>Hightlight Word Toggle Current

在下面的提示符中,选择右边的齿轮,即可设置快捷键

2、ripgrep

vscode 的搜索速度太慢了,可以使用ripgrep 应用来替换掉vscode自带的搜索功能。
ripgrep 是一个在服务器上运行的应用程序,需要先在服务器上安装(可以离线安装)
安装完成后,需要告诉vscode,在服务器上搜索文本时,使用ripgrep 作为搜索引擎:首先打开vscode命令,输入:

Preferences: Open Settings (JSON)(SSH:192.168.1.12)

打开服务器上的vscode配置文件,在其中输入下面的配置:

"search.defaultSearchProvider": "search-in-workspace",
"search.inWorkspace.useRipgrep": true,
"search.inWorkspace.additionalFileTypes": [
  "cpp",
  "c",
  "h",
  "hpp"
]

这个配置文件告诉vscode,搜索时使用ripgrep 搜索 cpp、c、h、hpp文件

五、参考文章

给服务器安装vscode插件

你可能感兴趣的:(linux系统,vscode,c,clangd,符号跳转,代码补全,阅读源码,kernel源码)