SQLite源码编译与调试
环境要求
- 操作系统:CentOS 7.6 x64
- 编译工具:GCC 7.3.1版本及以上
- 调试工具:vscode(安装C/C++、CMake和CMake Tools插件)、gdb
- 其他依赖:tcl
- SQLite源码:sqlite-src-3400100
编译步骤
1. 升级GCC
yum install -y centos-release-scl-rh
yum install -y centos-release-scl
# 安装gcc7
yum install devtoolset-7-gcc.x86_64
yum install devtoolset-7-gcc-c++.x86_64
# 启用
scl enable devtoolset-7 bash
# 查看版本
gcc --version
g++ --version
# 防止失效方法:修改软连接(推荐)
mv /usr/bin/gcc /usr/bin/gcc4.8.5
ln -s /opt/rh/devtoolset-7/root/usr/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++4.8.5
ln -s /opt/rh/devtoolset-7/root/usr/bin/g++ /usr/bin/g++
mv /usr/bin/cc /usr/bin/cc4.8.5
ln -s /opt/rh/devtoolset-7/root/usr/bin/cc /usr/bin/cc
mv /usr/bin/c++ /usr/bin/c++4.8.5
ln -s /opt/rh/devtoolset-7/root/usr/bin/c++ /usr/bin/c++
2. 安装依赖
yum install -y gdb tcl tcl-devel
3. 编译源码
此处sqlite-src-3400100
的存放路径是/root
,需要根据自己的存放路径做出调整
# 安装解压工具
yum install -y unzip
# 解压源码包
unzip sqlite-src-3400100
# 进入sqlite-src-3400100
cd /root/sqlite-src-3400100/
# 修改configure文件权限
chmod +x configure
# 新建build文件夹,用于存放编译后的结果
mkdir build
# 进入新建的build文件夹
cd build/
# 配置安装参数,将SQLite安装到新建的build目录下
../configure --prefix=/root/sqlite-src-3400100/build/
# 编译安装
make
4. 开始调试
使用vscode连接虚拟机或远程服务器(参考:vscode连接远程服务器(傻瓜式教学)),打开文件夹/root/sqlite-src-3400100/
。新建文件夹.vscode
,并在.vscode
内部新建文件launch.json
,写入如下内容:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "SQLite Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/sqlite3",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
按照研究需要打上断点,按F5即可调试。
注意:必须在build
文件夹内部的源文件打断点,否则断点无效,无法调试。参考断点位置:文件/root/sqlite-src-3400100/build/sqlite3.c
第90421行。