2012-09-14 50 views
2

我想调试从修改的SQLite代码创建的SQLite数据库的实例。当用户从数据库中选择一些数据时,我想逐步浏览SQLite源代码,看看SQLite的逻辑是什么。这样做的目的是我想看看我是否可以将SELECT触发器添加到SQLite源代码中,并使用我的新类型的触发器创建SQLite数据库。目前SQLite只支持UPDATE触发器,INSERT & DELETE。如何使用Visual Studio调试SQLite源代码

到目前为止,我已经从http://www.sqlite.org/index.html下载了“合并”SQLite源代码,并设法在Visual Studio 2010中构建它。但是我不知道如何调试它。我试图创建一个测试C#的Web应用程序,使用SQLite项目作为项目参考 - 但它不会让我把它作为参考添加它(抛出一个错误,说“引用'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也许?),并且没有自动监视变量或突出显示代码当前正在打破哪一行。

+0

我在这里创建了基于cmake的SQLite合并构建https://github.com/snikulov/sqlite.cmake.build,以便您可以生成Visual Studio解决方案,将其构建为调试目标,然后进行调试。希望它会有用。 –

回答

0

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

这里的算法:

  1. 学习语言(C)
  2. 了解你的工具(Visual Studio中的调试器)
  3. 学习目标(SQLite的 - 是库,提供API别人,所以你需要对例如sqlite3_open SQLite的API()设置断点,并在Visual Studio

我创建cmake-based build for SQLite amalgamation这样你就可以生成的Visual Studio溶胶“运行” shell.c源文件)将其构建为调试目标,然后进行调试。希望它会有用。

+0

1)我不熟悉C语言,但是我在15年前编写了它。 2)我对Visual Studio调试器非常熟悉,因为过去8年来我每天都在使用它。 3)我开始学习SQLite,这是我发布这个问题的原因。我在寻求建立一个项目的具体帮助 - 而不是泛泛而谈。也许我没有明确地提出这个问题,让你有效回答? – JumpingJezza

+0

@JumpingJezza对不起,如果我伤害你的话。但我的介绍提供了一个干净的方式来开始调试。那么你只需要省略两个第一步。啊,是的 - 感谢您的投票。 –

+0

你的答案如何帮助我解决如何运行sqlite数据库的实例并对其进行调试?引用downvote“这个答案没有用” – JumpingJezza

相关问题