在VS Code中用clangd开发QEMU代码的相关问题及开发者工具咨询
解决QEMU开发中的clangd、代码格式化及流程问题
clangd无法提供代码提示的排查步骤
- 确认
compile_commands.json生成路径:必须在QEMU的build目录下执行ninja -t compdb > compile_commands.json,要么将文件移到源码根目录,要么在VS Code的settings.json中指定clangd读取路径:"clangd.arguments": ["--compile-commands-dir=/path/to/your/qemu/build"] - 检查clangd版本:老旧版本对meson/ninja生成的编译数据库兼容性差,建议升级到最新稳定版
- 排除插件冲突:暂时禁用VS Code中其他C/C相关插件(比如官方C/C扩展),避免语言服务冲突
- 重启验证:重启clangd插件或VS Code,确保配置生效
QEMU的代码格式化工具
QEMU官方不使用.clang-format,而是维护了一套自定义代码风格工具:
- 格式化脚本:
scripts/qemu-style.py,执行以下命令自动修复代码风格:./scripts/qemu-style.py --fix your-source-file.c - 风格检查脚本:
scripts/checkpatch.pl,提交代码前用它检查风格合规性,推荐加上--strict参数:./scripts/checkpatch.pl --strict your-patch-file.patch
QEMU开发者的典型工作流程
- 构建环节:当前推荐用meson+ninja组合,步骤为:
mkdir build && cd build meson setup .. # 可添加配置参数,比如-Ddebug=true开启调试信息 ninja - 调试环节:
- 常用gdb配合QEMU调试:启动QEMU时加
-s -S参数(等待gdb连接),然后在gdb中执行target remote :1234 - VS Code中可配置
launch.json,直接关联gdb和QEMU进程,实现断点调试
- 常用gdb配合QEMU调试:启动QEMU时加
- 代码检查:
- 用
checkpatch.pl做风格检查 - 开启sanitizer做动态分析:meson配置时加
-Db_sanitize=address,undefined,编译后运行程序自动检测内存问题 - 用
ninja scan-build运行clang静态分析
- 用
- 测试环节:执行
ninja test运行项目自带的单元测试和集成测试,也可单独运行tests/目录下的特定测试脚本
内容的提问来源于stack exchange,提问作者董继斌
相关产品推荐
相关产品推荐

