1
kgdb00 OP 我的 c_cpp_properties.json 文件的配置如下:
{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "${workspaceFolder}/include/" ], "defines": [], "compilerPath": "/usr/lib64/ccache/gcc", "cStandard": "gnu17", "cppStandard": "gnu++17", "intelliSenseMode": "linux-gcc-x64", "compileCommands": "${workspaceFolder}/compile_commands.json" } ], "version": 4 } 不知道是不是我配置错误所以才没有生效。 |
2
kgdb00 OP 没人回复,自己顶一下
|
3
hhjuteman 2021-12-27 09:48:24 +08:00
我的建议是不要用 compile_commands.json 。
这类工具都是基于 clang ast macher 或者 libclang 做出来的符号索引工具。compile_command 是一个编译记录的数据库,ast_matcher 读到数据库以后会对语法进行 ast 树解析并生成文件,Linux kernel 代码太大,ast 匹配占用的 cpu 时间太长。 使用 clangd 会因为符号太多导致索引崩溃,这个也很正常。如果电脑性能不是特别好我建议使用传统的 gtags 或者 ctags 来阅读 Linux kernel 的源码。我以前用笔记本的时候从来没有用 compile_commands 的方式成功阅读过 kernel 源码,现在用台式机了,用 compile_commands 阅读过 chromium 的源码,不过我电脑的性能特别高。 所以我还是建议使用 tags 的方式, 我这里用搜索了一下,不知道有没有用: https://blog.jaycetyle.com/2018/10/vscode-gnu-global/ |
4
kgdb00 OP @hhjuteman 感谢回复!
试了一下这个 C/C++ GNU Global 插件,感觉没什么问题,不过在我的配置下编译内核所需的源码文件只有一千多个, 如果有个办法能让微软官方的这个 "C/C++" 插件根据特定的文件列表来生产索引,各方面性能应该也是满足的。 |
5
hhjuteman 2021-12-27 10:29:35 +08:00
@kgdb00
您可以试试 clangd 这个插件,是 clang 官方出的,也是配置 compile command 。 使用之前需要先安装 clangd 。apt install clangd 之类的 |