如何使用VSC来导航Linux内核源代码

时间:2018-03-09 17:10:51

标签: visual-studio-code preprocessor

我正在从Eclipse CDT转换。使用预处理器定义(无论是在Makefile中显式指定还是通过外部自动生成的头文件包含)导航C / C ++代码时,必须使用预处理器宏功能。如果没有这个,导航Linux源是不可能的,如this seminal wiki page on using Eclipse to study the Linux code所述。我正在寻找VSC的等效功能。会很感激指针。

问候

4 个答案:

答案 0 :(得分:3)

  1. 安装ms-vscode.cpptools扩展名。
  2. 在VSCode中打开内核源文件夹。
  3. 关注instructions,将“$ {workspaceFolder} / include”和“$ {workspaceFolder} / arch / {your arch} / include”添加到includePath,“你的拱门”是x86 / arm等< / LI>
  4. 等待IntelliSence索引。

答案 1 :(得分:1)

我不需要添加arch文件夹(对于x86_64,它实际上是空的),但是需要添加一些基本定义,以使编译器特定的类型和宏对intellisense可见。我的最小配置如下所示。为了获得完美的结果,您必须添加内核.config文件(例如CONFIG_MMU)中配置的所有定义。其中有很多,所以通常您只关注您真正关心的少数几个。

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "${workspaceFolder}/include"
            ],
            "defines": [
                "__GNUC__",
                "__KERNEL__"
            ],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

答案 2 :(得分:0)

从今天开始,我发现vscode-linux-kernel项目的使用优于上面列出的两个答案,因为通过代码和Intellisense进行导航非常好。

该项目已发布到公共领域。

答案 3 :(得分:0)

这是最适合我的方法(修复了a previous answer中的代码段问题):

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "${workspaceFolder}/include",
                "${workspaceFolder}/arch/<arch>/include" # replace <arch> with actual architecture to build
            ],
            "forcedInclude": [
                "${workspaceFolder}/BUILD/include/generated/autoconf.h"
            ],
            "defines": [
                "__KERNEL__"
            ],
            "compilerPath": "/usr/bin/gg", # replace this with your compiler (also gcc cross-compiler)
            "cStandard": "c11",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}