我想调试一个由修改过的SQLite代码创建的SQLite数据库实例。当用户从数据库中选择一些数据时,我想逐步查看SQLite源代码,并了解SQLite的逻辑。目的是我想看看是否可以向SQLite源代码添加SELECT触发器,并在其中创建一个具有我的新类型触发器的SQLite数据库。当前,SQLite仅支持UPDATE、INSERT和DELETE上的触发器。
到目前为止,我已经从http://www.sqlite.org/index.html下载了“聚合”的SQLite源代码,并成功在Visual Studio 2010中构建了它。但是,我不知道如何对其进行调试。我尝试创建一个测试C# web应用程序,该应用程序将SQLite项目用作项目引用-但是它不允许我将其添加为引用(抛出一个非常有用的错误,说“无法添加对'mySQLiteproj'的引用”)。我的当前结构只是一个带有sqlite3.c和sqlite3.h文件的空C项目。
到目前为止,我已经从http://www.sqlite.org/index.html下载了“聚合”的SQLite源代码,并成功在Visual Studio 2010中构建了它。但是,我不知道如何对其进行调试。我尝试创建一个测试C# web应用程序,该应用程序将SQLite项目用作项目引用-但是它不允许我将其添加为引用(抛出一个非常有用的错误,说“无法添加对'mySQLiteproj'的引用”)。我的当前结构只是一个带有sqlite3.c和sqlite3.h文件的空C项目。
SQLite的代码是用C语言编写的,而我对C语言不熟悉,所以可能我正在完全错误的方向上前进?我有C#背景,所以请不要建议我放弃使用Visual Studio,而是使用记事本或其他一些“高级”的IDE :)
简而言之:我如何调试SQLite源代码?
编辑:根据Sergey的建议,我将shell.c文件添加到项目中,现在可以“有点儿”调试了。它会在shell.c中触发断点,但不会在sqlite3.c中触发断点。我可以将sqlite3.c作为从shell.c调用的函数调用,但是行似乎与正在运行的代码不匹配。 一半的行被阻止了(由resharper或许?),没有自动监视变量或突出显示当前中断的代码的行。