编译调试 ceph v16.2.10
目录
对于学习分布式存储而言,ceph 是一个很好的例子。它具有分布式存储所需的各种常用功能。本篇通过一个开发者的角度来尝试对 ceph 源码进行编译,并且调试。
准备阶段
先说明实验的环境:
- 操作系统:Ubuntu desktop 20.04
- 编译工具: gcc/g++ 9.4.0 、 python 3.8 、 cmake 3.16.3
- 源码版本:ceph v16.2.10
- IDE:vscode 、clangd
编译 ceph
直接从 github 上下载 ceph 源码
|
|
安装依赖项
|
|
这里出现一个问题,在安装 pytest 包时提示版本错误,解决方式时修改 requirement.txt 文件
|
|
编译 ceph,因为需要设置开发环境,所以需要先修改 ceph 编译参数,直接修改 do_cmake.sh
|
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=1
参数是告诉 cmake 预编译时生成 compile_commmands.json
,配合 clangd 可以进行代码补全。
生成 makefile 文件
|
|
执行完成后会生成 build 目录,在 build 目录内编译二进制文件
|
|
通过这个命令就可以生成 ceph 本地开发环境需要的各种文件了。这个命令需要一段时间,先直接配置 vscode 环境。
配置 vscode
vscode 配合 clangd 可以很好的实现 C++ 代码补全功能。先设置 vscode 远程连接,在远程机器上安装插件
- C/C++
- clangd
- CMake
- GDB Debug
- CodeLLDB
ubuntu 安装 clangd,添加 clangd 源码
|
|
安装 clangd-14
|
|
使用 vscode 远程打开 ceph 目录
添加 settings.json 和 lauch.json
|
|
|
|
调试 ceph
等待 make 命令编译完成,执行 vstart
|
|
本地会启动一个 ceph-mon
和 一个 ceph-osd
。直接 kill ceph-osd
进程,调试 ceph-osd
接着就可以愉快的编译调试 ceph 源码了。