2010-05-30 22 views
2

崩潰控制流動是有辦法做到以下幾點:我有一個MySQL數據庫如何調試MySQL存儲的特效,而不從應用

,並有寫在上面還有很多存儲特效。我使用C中的MySQL客戶端庫連接到這個數據庫,除其他外,調用存儲過程。有沒有辦法在存儲過程中設置斷點,以便當從C程序(使用mySql客戶端庫)調用存儲過程時,控制流在C程序中停止,我們可以進入存儲的proc調用到任何級別的嵌套和insspecting變量等(如任何像樣的C調試提供)?

有沒有辦法做到上述?通過一些第三方工具或類似的,如果不通過普通的MySql。

幫助表示讚賞。

謝謝

回答

0

調試MySQL存儲過程並不容易。

但是,您可以執行的操作是使用INSERT將它們裝入某個描述的日誌表中。同樣,如果您有用戶定義的功能將日誌輸出到日誌中,您可以在不同的地方調用該功能以查看發生了什麼。

這些都不會中斷流程。

如果你有一個用戶定義的函數調用,你可以很容易地在那裏設置一個斷點,並使用gdb連接到mysqld。然而,檢查狀態(即變量)不是直截了當的。

0

感謝您的回覆。因此,您推薦的方法類似於以下Dr.Dobbs Journal文章drdobbs.com/database/218100564中的方法。根據我的理解,MySql的「調試」工具(如DbForge for MySql)也會自動執行此過程,但本質上使用同樣的方法。即它們將params或其他內容輸出到各種調試表(可以包括時間戳等以在稍後查看調試表時獲得控制流和參數的感覺)。這些工具唯一的幫助是他們節省了創建調試表的麻煩,並且手動在存儲過程中的各個點寫入插入語句。 是這樣嗎? 這仍然有一些幫助,但我正在尋找的是一些可用的東西,只要在C程序的控制流程的持續斷點處進入存儲過程,並讓我們檢查從C應用程序傳遞給存儲過程的參數。加入等等等等。顯然沒有相同的工具?

任何人都使用DbForge的調試功能?從這個網址看來,它們可能會支持我在尋找哪些部分?

http://www.devart.com/dbforge/mysql/studio/articles/debugging.html

馬克,我不明白你對闖入MySQL守護進程本身評論。

+0

這是Dr.Dobbs日誌鏈接我指的是 http://www.drdobbs.com/database/218100564 – 2010-05-30 14:10:19