使用VSCode阅读Linux Kernel代码
Kernel代码可以通过generate_compdb.py工具去生成compile_commands.json编译器数据库文件,并配合Clangd插件实现精准代码跳转。
generate_compdb.py工具可以在kernel原始代码中找到,也可以从以下链接下载:
raw.githubusercontent.com/amezin/vscode-linux-kernel/refs/heads/master/generate_compdb.py
使用VSCode打开kernel目录,注意一定要是从菜单-》文件-》打开文件夹这样的方式打开kernel目录,VSCode的工作依赖文件夹的路径,否则后面所有的配置将无法正常使用。
在Kernel的源码目录下新建".vscode"文件夹,注意这里有一个点号,不要忘记复制。再在.vscode文件夹中放入"generate_compdb.py"和新建一个"tasks.json"文件,并将以下内容
放入该文件,用于配置VSCode的“默认生成任务”。
请按照实际的kernel 输出目录配置"generate_compdb.py -o"之后的参数,该路径是kernel编译生成的中间文件所在路径。一般Android的项目都是在out目录,如果你是单独编译内核并且没有指定目录,那么输出文件目录应该就是当前的kernel目录。
变量${workspaceRoot}是使用VSCode打开的kernel目录。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Generate compile_commands.json",
"type": "shell",
"command": "python3 ${workspaceRoot}/.vscode/generate_compdb.py -O ~/workspace/uis7870-bmhv-project_private/android13/bsp/out/androidt/uis7870_2c10_car_bmhv_nosec/obj/kernel/",
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
完成以上步骤之后,你可以按Ctrl + Shift + B或者点击菜单-》终端-》运行任务-》Generate compile_commands.json来生成compile_commands.json编译器数据库文件。生成该文件之后,你可能需要按Ctrl + P,输入">reload window"来重新加载窗口刷新插件配置使Clangd插件的代码跳转开始工作。
其它说明:如果Clangd插件与C/C++插件产生冲突,请停用或卸载C/C++插件。如果Clangd插件提示缺少Ctags组件,请按照VSCode提示安装Ctags插件或者在系统中手动安装Ctags,手动安装的指令是sudo apt install ctags

浙公网安备 33010602011771号