如何使用Visual Studio调试SQLite源代码

时间:2012-09-14 06:48:20

标签: c visual-studio-2010 debugging sqlite

我想调试从修改过的SQLite代码创建的SQLite数据库的实例。当用户从数据库中选择一些数据时,我想逐步浏览SQLite源代码,看看SQLite的逻辑是什么。这样做的目的是我想看看我是否可以向SQLite源代码添加SELECT触发器并使用我的新类型的触发器创建一个SQLite数据库。目前,SQLite仅支持UPDATE,INSERT和&amp ;;删除。

到目前为止,我已经从http://www.sqlite.org/index.html下载了“amalgamation”SQLite源代码,并设法在Visual Studio 2010中构建它。但我不知道如何对它进行调试。我尝试创建一个使用SQLite项目作为项目引用的测试C#Web应用程序 - 但它不会让我将它添加为引用(抛出错误说“无法添加对'mySQLiteproj'的引用”这是SOOO有用)。我当前的结构只是一个空的C项目,其中包含sqlite3.c和sqlite3.h文件。

SQLite代码是用C编写的,我不熟悉,所以也许我会完全走错路?我来自C#背景所以请不要建议我使用Visual Studio废弃,而是使用记事本或其他一些“硬核”IDE:)

简而言之:如何调试SQLite源代码?

编辑:我已按照Sergey的建议将shell.c文件添加到项目中,现在可以“排序”调试。它将在shell.c中命中断点,但不会命中sqlite3.c。我可以从shell.c进入sqlite3.c作为函数调用,但这些行似乎与运行的代码不匹配。有一半的线是灰色的(通过resharper可能?)并且没有自动观察变量或突出显示代码当前正在打破哪一行。

1 个答案:

答案 0 :(得分:0)

要调试用“您不熟悉”的语言编写的库代码,最好从头开始。

这里算法:

  1. 学习语言(C)
  2. 了解您的工具(Visual Studio中的调试器)
  3. 学习目标(SQLite - 是为其他人提供API的库,因此您需要在SQLite API上设置断点,例如sqlite3_open()和在Visual Studio中“运行”shell.c源文件)
  4. 我创建了cmake-based build for SQLite amalgamation,因此您可以生成Visual Studio解决方案,将其构建为Debug目标,然后进行调试。希望它会有用。