在windows下使用vs2013編譯和調試mysql源代碼

1. 準備工做

1OSwin10 + VS2013html

2mysql 源碼(windows版):mysql-5.6.25.zip mysql

3perl toolActivePerl-5.16.3.1604-MSWin32-x64-298023.msisql

4Cmakecmake-3.5.0-win32-x86 .exe數據庫

5Bisonbison-2.4.1-setup.exewindows

     軟件列表:bash

     

安裝須要注意的幾點,通常安裝在根目錄下,如C:\Cmake C:\GnuWin32 C:\Perl64 ,固然也能夠是其餘目錄,通常路徑不要出現中文字符,空格及特殊字符。函數

     Perl, Cmake, Bison安裝完事以後,將他們安裝目錄下的bin所在路徑加入環境變量中(windows環境變量添加),如C:\Cmake\bin工具

     

     保險起見咱們須要驗證一下安裝是否成功:ui

    

 

2. 開始安裝

在任意你喜歡的盤裏面建立一個用於安裝的目錄:如在D盤建立mysql而後將mysql-5.6.25.zip 解壓到該目錄下,而後在cmd中切換到安裝目錄,此處即爲D:\mysql\mysql-5.6.25,記({install}=D:\mysql\mysql-5.6.25,其下包含以下文件目錄:spa

     

而後在{install}下執行如下命令:

>mkdir bld
>cd bld
>cmake ..

 這樣你可看到相似以下的輸出:

     有一些錯誤,目前也沒有解決,但其實這並不影響咱們生成VSMySQL.sln 工程文件。事實上只要看到下面這個就能夠了,各類not found也沒關係。若是採用Cmake 圖形界面,其實也差很少了。這裏再也不贅述。

     下一步咱們就能夠在VS2013build solution了(對應生成解決方案),但爲了儘量減小警告或錯誤,咱們首先須要對下述文件進行修改:

            源碼目錄\strings\ctype-czech.c

源碼目錄\strings\ctype-latin1.c

源碼目錄\strings\decimal.c

源碼目錄\mysys\thr_mutex.c

源碼目錄\storage\innobase\include\ut0mem.h

源碼目錄\sql\sql_locale.cc

修改的方法很簡單,就是將這些文件以UTF-8(帶BOM頭的)格式保存。通常使用Nodepad++工具等。

最後一步就是找到{install}\mysql-5.6.25\sql\mysqld.cc中的test_lc_time_sz()函數,將其中的DBUG_ASSERT(0)改成DBUG_ASSERT(1)便可。

至此咱們就完成了將源碼轉換成VS中工程文件的目的。以後咱們就能夠build solution了。若是沒有錯誤說明就已經沒有問題了,一些小的警告多是由於C++編譯器比C編譯器嚴格的緣故。下一步咱們開始調試。

3. 調試

而後將mysqld工程的Debug:屬性->調試->命令參數,設爲--console  --defaults-extra-file=C:\Windows\my.ini以下:

      

而後啓動實例

      

能夠打斷點,進入程序跟蹤調試。

      

也能夠在程序生成的目錄下,在命令行狀態下運行,進入調試生成目錄:

mysqld --debug  --standalone

     

運行調試客戶端

      

4.注意事項

     1.mysql默認查找配置文件的路徑:程序首先會分別收集windows系統目錄、C:\根目錄、執行碼所在的父目錄,若是配置了環境變量MYSQL_HOME,這個目錄也會被蒐集,而後在這些目錄下進行查找my.ini文件

     c盤的根目錄下放了一個默認的windows下的my.ini文件

    

     基目錄爲e:\mysql,數據目錄爲e:\mysql\data

     

 

   2.mysql的基目錄和數據目錄,數據目錄要有mysql基本的系統數據庫文件

     

參考資料:

1.Win7+VS2010mysql源碼編譯與調試 

     http://www.2cto.com/database/201407/316681.html

2.Windows+VS2012環境下編譯調試MySQL源碼

     http://www.voidcn.com/blog/a809146548/article/p-4851777.html

相關文章
相關標籤/搜索