SQLite3 源码分析-准备工作
SQLite3 源码分析-准备工作
前记
我们此次对 SQlite3 3.40 版本的源码进行分析,可以直接在 gitee 上进行下载。操作系统我们这次使用的是 Rocky Linux 9 ,当然也可以选择其他系统。此外我们还需要的软件是 Vscode ,可以很方便的帮助我们分析代码,调试代码。
环境准备
下载代码
1
git clone -b version-3.40.0 https://gitee.com/mirrors/sqlite.git
安装 gcc
1
sudo yum install gcc
安装 clangd 安装 clangd 是因为我们需要使用 vscode 的 clangd 插件,可以辅助我们查看代码
1
sudo yum install clangd
安装 bear
bear 用于生产 compile_command.json 这个文件,cland 会读取这个文件。
1
sudo yum install bear
安装 vscode
查看 vscode 官网进行安装
安装好 vscode 后,需要安装 codelldb 和 clangd 两个插件。
代码编译
因为 sqlite3 原来的编译方式会将所有的源文件复制到一个 sqlite3.c 文件中进行编译,但是这样的话,会对我们理解代码和调试代码造成一定的困难。因此我们需要调整一下 Makefile 以便调试。
进入 sqlite3 的目录,执行
1
bear -- ./configure --enable-debug
执行完成后生成了一个 Makefile,修改如下:
- 将所有的 O2 修改为 O0
- 修改 167 行为 USE_AMALGAMATION = 0
- 修改 sqlite3 的编译依赖
sqlite3$(TEXE): shell.c $(LIBOBJ) $(LTLINK) $(READLINE_FLAGS) $(SHELL_OPT) -o $@ \ shell.c $(LIBOBJ) \ $(LIBREADLINE) $(TLIBS) -rpath "$(libdir)"将其中的 sqlite3.c 修改为 $(LIBOBJ)
这样就会使用分散的文件来编译 sqlite3 这个程序了。
编译
1
bear -- make -j4
最后就是生成调试需要的 launch.json 文件,这个是我的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Launch",
"program": "${workspaceFolder}/sqlite3",
"args": [
"test.db"
],
"cwd": "${workspaceFolder}"
},
{
"type": "lldb",
"request": "attach",
"name": "Attach",
"preRunCommands": [
"process handle SIGWINCH -n true -p false -s false"
],
"pid": "${command:pickMyProcess}"
}
]
}
其中的 process handle SIGWINCH -n true -p false -s false 是为了屏蔽 SIGWINCH 这个信号。
环境配置到这里就结束了。截图如下:
本文由作者按照 CC BY 4.0 进行授权
