LevelDB 调试环境搭建
LevelDB 是知名的 C++/数据库/K-V 存储/LSM Tree 相关的项目,由 Google 的 Jeffrey Dean 等知名大牛编写。阅读源码是学习提升的必经之路,这条道路上的第一个障碍就是如何把代码跑起来,并自己上手运行、调试。本文以 LevelDB 为例,介绍如何搭建 LevelDB 的调试环境,为后续阅读源码做好铺垫工作。
本文的环境为 Linux + VS Code,LevelDB 官方仓库为:google/leveldb: LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values. (github.com) 。
1. 必要插件安装
使用 VS Code 阅读代码时,选择合适的插件能提升效率。之前在网上看到很多推荐 clangd + CodeLLDB 家族的插件,而本人之前也一直使用微软的 IntelliSense 等官方 C/C++ 开发环境插件。因此,借这次机会尝试下新事物。
插件的安装流程本文就详细介绍了,网上能够搜索很多相关的文章,这里贴几个供参考:
可以选择一个博客,按照步骤安装插件。要注意的是 clangd 和微软的插件只可以安装一个,防止冲突。
2. 克隆仓库
安装完插件后,我们来拉取代码。当然可以使用谷歌官方的代码仓库:LevelDB ,不过笔者也克隆了一个仓库,并提供了可进行 Debug 的入口文件,并更改了 CmakeLists.txt 文件,想省点事可以克隆如下仓库:UnpureRationalist/leveldb: LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values. (github.com) 。
具体的命令直接参考代码仓库的 README 就行了,注意使用 git clone
的时候要加上 --recurse-submodules
选项。
3. 编译调试
下载完成代码后进入项目根目录,执行下面的命令进行编译:
1 |
|
编译完成后,使用 ls
命令查看输出,具体如下:
这里使用的是本人克隆并稍作修改的仓库,多了一个可执行文件:test_entry
,用于进行调试。这一可执行文件对应的源代码位于
benchmarks
目录下,文件名为
test.cc
,具体代码(摘自 LevelDB 官方文档中)如下:
1 |
|
我们在 VS Code 页面按 Ctrl + Shift + D
按键,左边出现以下界面:
点击图中红色框内的
create a launch.json file
,创建文件,复制粘贴内容如下:
1 |
|
其实主要就是改动
"program": "${workspaceFolder}/build/test_entry"
这个配置,以找到 Debug 入口文件。
然后在 test.cc
文件中随便添加一个断点,点击
F5
按键,开始愉快的 Debug:
至此,就可以在图形化界面中进行 Debug,追踪代码执行流程,阅读源码。
当然,喜欢 gdb
命令行的话就不需要这一通操作了,直接命令行 gdb
启动进行
Debug 即可。
4. 总结
以上就是在 VS Code 中搭建 LevelDB 调试环境的大致流程,如果中途遇到问题,针对性地进行搜索解决即可。成功运行代码,开启调试后,就可以开始阅读源码了,后续见。