最近在研究SQLite的源码 ,想通过单步调试来先走一遍。结果调试过程中出现跳转错误 。在百度,google找了很多天解决办法都未果 ,幸运的是在年前最后一天上班的时候,找到了 "mz02005" 写的关于vs2008调试SQLite的文章 。帮我解决了大问题哦 。因为自己不太懂awk工具 ,所以按照他说的方式我无从下手 ,后来自己用另外一种方式解决了问题。
在windows下建一个项目 ,把相关的文件加入到这个工程中 。去掉无实际意义的test*.*文件 。
由于缺少几个文件,这就是我在windows下搞不下去的原因. 至于parse.c 和parse.h 到好办 ,把parse.y 这个文件 ,通过lemon.c 和 lempar.c 这两个文件生成的lemon编译一下就出来了 。再看看awk,真心不知道是个什么玩意 ,百度了下 ,觉得自己不是很懂,我就是想要它生成的那个文件嘛 ,没啥心思去研究这个东西,根据 "mz02005"的介绍 ,看了看main.mk文件,里面的编译命令比较齐全 。就把这个压缩包放到了linux下 ,估计他是可以再linux下编译通过的 。就大胆一试了 。
注意 :一般的README文件还是很有意义滴 。我就从里面找到了这么一段:
For example:
tar xzf sqlite.tar.gz ;# Unpack the source tree into "sqlite"
mkdir bld ;# Build will occur in a sibling directory
cd bld ;# Change to the build directory
../sqlite/configure ;# Run the configure script
make ;# Run the makefile.
make install ;# (Optional) Install the build products
然后按照这么个步骤,做到了倒数第三步,发现,我要的文件都有了 :parse.h ,parse.c ,opcodes.c ,opcodes.h 。
然后把这些个文件放进工程里面就可以了 。
运行发现会有错误 ,宏定义问题 ,在项目->属性->C/C++->预处理器->预处理器定义 中添加对应的宏 SQLITE_TESTCTRL_PGHDRSZ 即可。
之后你运行还是会报一个头文件找不到 ,tcl.h 。CTRL+F 发现整个项目就两个地方用到了它 ,其中一个还是在宏编译命令里面 ,这个应该是涉及到了某个扩展的功能 ,我就大胆的把tclsqlite.c 给移除到工程之外了(这个确实有点不择手段的感觉),但事实证明,删掉它影响不大 。
剩下的事情,你也懂了 ,就不说了 。
这个纯粹只是解决了我目前的问题 ,有太多不懂的地方,如果有人也有兴趣研究SQLite的话 ,不防一起讨论下哦 。