使用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

posted @ 2025-12-04 12:43  PYPYN  阅读(31)  评论(0)    收藏  举报