2012-09-14 105 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

相關問題