Sqlite的编译、使用和调试

首先准备好gcc的编译环境,这里我用的是mingw。

然后下载sqlite3的源代码。

然后用如下的命令进行编译:


gcc -DSQLITE_DEBUG -ggdb *.c -o sqlite3

其中的编译参数“SQLITE_DEBUT”是过会用来理解sqlite时使用的,详细请参考附录。

编译参数-ggdb是用来生成gdb调试信息的,在待会源代码的调试中会用到。


接着运行编译好的sqlite3.exe


在命令行中首先打开调试属性(用于查看sqlite的虚拟机的指令集)

PRAGMA vdbe_trace=ON;

最后就是运行sqlite语句并分析。


sqlite> create table cust(id int not null primary key, name char(30));
sqlite> PRAGMA vdbe_trace=ON;
VDBE Execution Trace:
   0 Expire           0    0    0      00
   1 Halt             0    0    0      00
sqlite> insert into cust values(21, "harry");
VDBE Execution Trace:
   0 Trace            0    0    0      00
   1 Goto             0   20    0      00
  20 Transaction      0    1    0      00
  21 VerifyCookie     0    1    0      00
  22 TableLock        0    2    1 cust 00
  23 Goto             0    2    0      00
   2 OpenWrite        0    2    0 2    00 cust
   3 OpenWrite        1    3    0 keyinfo(1,BINARY) 00 sqlite_autoindex_cust_1
   4 NewRowid         0    2    0      00
REG[2] =  i:1
   5 Integer         21    3    0      00
REG[3] =  i:21
   6 String8          0    4    0 harry 00
REG[4] =   t5[harry](8)
   7 HaltIfNull      19    2    3 cust.id may not be NULL 00
REG[3] =  i:21
   8 SCopy            3    5    0      00
REG[3] =  i:21
REG[5] =  i:21
REG[5] =  i:21
   9 SCopy            2    6    0      00
REG[2] =  i:1
REG[6] =  i:1
REG[6] =  i:1
  10 MakeRecord       5    2    1 db   00
REG[1] =  z5[0301011501.....](8)
  11 SCopy            2    7    0      00
REG[2] =  i:1
REG[7] =  i:1
REG[7] =  i:1
  12 IsUnique         1   14    7 5    00
REG[7] =  i:1
  14 IdxInsert        1    1    0      10
REG[1] =  z5[0301011501.....](8)
  15 MakeRecord       3    2    7 da   00
REG[7] =  z9[030117156861727279....harry](8)
  16 Insert           0    7    2 cust 1B
REG[7] =  z9[030117156861727279....harry](8)
REG[2] =  i:1
  17 Close            0    0    0      00
  18 Close            1    0    0      00
  19 Halt             0    0    0      00
sqlite>


上面的调试信息在以后的文章中介绍sqlite的虚拟机的时候会仔细讲解。

==================================

接下来,将用介绍用eclipse结合gdb来调试sqlite的源代码。

eclipse的环境要求:安装插件cdt。

在环境变量中要有gcc和gdb这两个命令。

新建一个c工程,然后把sqlite的几个代码导入到工程中。


调试开始:

1. 打开sqlite.exe

2. 右击eclipse的c工程,然后在弹出的菜单上选择"Debug As"/"Run Configurations...",在弹出的对话框的左边双击“C/C++ Attach to Application”,并且在右边选择“Disable auto build”,如下图所示:

3. 点击Debug按钮,弹出如下对话框,选择刚刚启动的sqlite.exe,就进入调试了。

4. 加入断点设置在shell.c的process_input函数中(此函数用来接收控制台的输入),然后在控制台输入sql命令,调试的画面如下:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLite是一个轻量级的嵌入式数据库引擎,可以在各种操作系统上运行。SQLite的开发语言是C,所以在编译SQLite时需要使用C编译器。对于Windows操作系统来说,Visual C++(简称VC)是一个常用的C/C++编译器。 下面是SQLite3编译VC的步骤: 1. 下载SQLite源代码:可以从SQLite官方网站或者其他可信的源代码托管平台上下载最新版本的SQLite源代码。 2. 安装Visual Studio:从Microsoft官方网站上下载并安装Visual Studio,根据个人需要选择相应的版本,比如Visual Studio Community。 3. 打开Visual Studio:打开Visual Studio开发环境,点击“文件”->“新建”->“项目”来创建一个新的项目。 4. 创建一个C/C++项目:在“创建新项目”对话框中,选择“Visual C++”下的“Win32控制台应用程序”,并填写项目名称等相关信息,点击“确定”。 5. 添加SQLite源代码:在“解决方案资源管理器”中,右键点击“源文件”或“头文件”文件夹,选择“添加”->“现有项”,然后找到下载的SQLite源代码文件,选择并点击“添加”。 6. 配置项目属性:右键点击项目名称,选择“属性”来配置项目的属性。在属性窗口中,选择“配置属性”->“C/C++”->“常规”,将“附加包含目录”设置为SQLite源代码所在的目录。 7. 编译项目:点击“生成”->“生成解决方案”来编译项目。如果编译成功,会在输出窗口中显示编译的状态信息。 8. 运行项目:编译成功后,点击“调试”->“开始执行”,运行SQLite应用程序。 这样就可以在Visual C++环境下编译SQLite3库文件了。注意,在编译时需要根据具体的需求进行一些配置,比如选择编译的版本(32位或64位)、编译使用的配置等。在编译完毕后,可以使用生成的SQLite库文件进行开发和部署。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值